python如何在zip存档中附加到文件

mno*_*tka 8 python compression zip

如果我做这样的事情:

from zipfile import ZipFile 

zip = ZipFile(archive, "a")  

for x in range(5):
    zip.writestr("file1.txt", "blabla")
Run Code Online (Sandbox Code Playgroud)

它将创建一个包含5个文件的存档,所有文件都名为"file1.txt".我想要实现的是拥有一个压缩文件,每个循环迭代都附加一些内容.是否有可能没有某种辅助缓冲区以及如何做到这一点?

Lev*_*sky 6

zipfile包是不可能的,但是gzip支持写入压缩文件:

import gzip
content = "Lots of content here"
f = gzip.open('/home/joe/file.txt.gz', 'wb')
f.write(content)
f.close()
Run Code Online (Sandbox Code Playgroud)

  • 但是gzip只能包含一个文件。 (4认同)
  • 当您将它与 tar 一起使用时,您不能再像这样直接写入单个文件:) (2认同)

Ryu*_*usa 5

很有可能使用Python将文件附加到压缩存档.

测试了linux mint 14,Python 2.7

import zipfile

#Create compressed zip archive and add files
z = zipfile.ZipFile("myzip.zip", "w",zipfile.ZIP_DEFLATED)
z.write("file1.ext")
z.write("file2.ext")
z.printdir()
z.close()

#Append files to compressed archive
z = zipfile.ZipFile("myzip.zip", "a",zipfile.ZIP_DEFLATED)
z.write("file3.ext")
z.printdir()
z.close()

#Extract all files in archive
z = zipfile.ZipFile("myzip.zip", "r",zipfile.ZIP_DEFLATED)
z.extractall("mydir")
z.close()
Run Code Online (Sandbox Code Playgroud)

  • 我相信问题的清晰解读是OP希望附加到`file1.ext`,在多次迭代中向现有文件添加额外内容,而不是添加其他文件. (5认同)