python как добавить в файл в zip архиве - PullRequest
7 голосов
/ 13 марта 2012

Если я сделаю что-то вроде этого:

from zipfile import ZipFile 

zip = ZipFile(archive, "a")  

for x in range(5):
    zip.writestr("file1.txt", "blabla")

Будет создан архив с 5 файлами с именем «file1.txt». Чего я хочу добиться, так это иметь один сжатый файл, к которому каждая итерация цикла добавляет некоторый контент. Возможно ли это без какого-либо вспомогательного буфера и как это сделать?

Ответы [ 2 ]

5 голосов
/ 06 августа 2014

Вполне возможно добавлять файлы в сжатый архив с помощью 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()
5 голосов
/ 13 марта 2012

С пакетом zipfile это невозможно, но запись в сжатые файлы поддерживается в gzip :

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