Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否可以在内存中创建多个文件,然后将其压缩并写入磁盘?_Python - Fatal编程技术网

Python 是否可以在内存中创建多个文件,然后将其压缩并写入磁盘?

Python 是否可以在内存中创建多个文件,然后将其压缩并写入磁盘?,python,Python,是否可以在内存中创建文件,并在将其写入磁盘之前将其按层次结构进行排列 open语句是否可以重定向到某种内存表示 我目前创建压缩目录的技术如下: 将内存中的所有内容写入临时文件夹 创建一个zipfile对象 重新加载以前生成的所有文件 将它们添加到zip并保存 删除所有临时文件 最终的结局是这样的: Zipped_root | | |---- file1.txt | |---- Image1.png | |---- Image

是否可以在内存中创建文件,并在将其写入磁盘之前将其按层次结构进行排列

open
语句是否可以重定向到某种内存表示

我目前创建压缩目录的技术如下:

  • 将内存中的所有内容写入临时文件夹
  • 创建一个
    zipfile
    对象
  • 重新加载以前生成的所有文件
  • 将它们添加到zip并保存
  • 删除所有临时文件 最终的结局是这样的:

    Zipped_root 
         |
         |
         |---- file1.txt
         |
         |---- Image1.png
         |
         |---- Image2.png
         |
         |---- file...N.txt
         | 
    

    有没有办法在内存中完成这一切

    是的。看一看关于压缩对象的zlib模块文档。还有一个归档模块,可用于创建要压缩的归档对象。您可以随时访问文档:

    $ python
    >>> import zlib
    >>> help(zlib)
    

    对。看一看关于压缩对象的zlib模块文档。还有一个归档模块,可用于创建要压缩的归档对象。您可以随时访问文档:

    $ python
    >>> import zlib
    >>> help(zlib)
    

    不久前,我实现了一个小型python库(),用于创建虚拟目录、文件,甚至在需要时压缩它们。从自述文件(虚拟目录在末尾被压缩):


    我这么做只是为了好玩,还没有对它进行过广泛的测试,但也许它对您还是有用的。

    不久前,我实现了一个小型python库(),用于创建虚拟目录、文件,甚至在需要时压缩它们。从自述文件(虚拟目录在末尾被压缩):


    我这么做只是为了好玩,还没有对它进行过广泛的测试,但不管怎样,它可能对你有用。

    你读过ZipFile文档吗?有一个ZipFile.writestr()方法允许直接传递数据。@TimPeters我有。它适用于文本文件。然而,我也希望能找到一种写图片的方法。你看过图书馆吗?这听起来很有帮助。数据就是数据——在位级别上,文本文件和图像文件没有区别。你有什么问题?@TimPeters当我试图将PIL图像对象传递给它时,它抛出了一个错误。然而!利用上面SethMMorton的建议,我能够将
    PIL
    对象与
    StingIO
    模块一起使用,然后将其传递给zipfile库的
    writestr
    函数。现在真是魅力四射!谢谢你看过ZipFile文档了吗?有一个ZipFile.writestr()方法允许直接传递数据。@TimPeters我有。它适用于文本文件。然而,我也希望能找到一种写图片的方法。你看过图书馆吗?这听起来很有帮助。数据就是数据——在位级别上,文本文件和图像文件没有区别。你有什么问题?@TimPeters当我试图将PIL图像对象传递给它时,它抛出了一个错误。然而!利用上面SethMMorton的建议,我能够将
    PIL
    对象与
    StingIO
    模块一起使用,然后将其传递给zipfile库的
    writestr
    函数。现在真是魅力四射!谢谢