2012-03-13 12 views
5

Nếu tôi làm điều gì đó như thế này:python làm thế nào để thêm vào tập tin trong kho lưu trữ zip

from zipfile import ZipFile 

zip = ZipFile(archive, "a") 

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

Nó sẽ tạo ra một kho lưu trữ với 5 file tất cả các tên "file1.txt". Những gì tôi muốn đạt được là có một tập tin nén mà mỗi vòng lặp lặp nối thêm một số nội dung. Là nó có thể mà không có một số loại đệm phụ trợ và làm thế nào để làm điều này?

+0

@MoSander: Tôi nghĩ rằng mnowotka muốn thêm nội dung vào một tập tin duy nhất trong các kho lưu trữ, không thêm một tập tin vào kho lưu trữ. – abw333

+0

@ abw333 có, tôi thấy điều đó bây giờ. Việc thêm một tệp vào kho lưu trữ là những gì * I * muốn làm khi tôi đến bài đăng này;) –

Trả lời

3

Đó là bất khả thi với gói zipfile nhưng bằng văn bản cho các tập tin nén được hỗ trợ trong gzip:

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

Nhưng gzip chỉ có thể chứa một tệp. – Dikei

+0

Đúng, nhưng nó có thể được sử dụng cùng với [tarfile] (http://docs.python.org/library/tarfile.html) hoặc [zipfile] (http://docs.python.org/library/zipfile.html). –

+1

Khi bạn sử dụng nó với tar, bạn không thể ghi trực tiếp vào một tệp như thế này nữa :) – Dikei

5

của nó hoàn toàn có thể thêm các tập tin tài liệu nén bằng Python.

Thử nghiệm trên bạc hà linux 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() 
+0

Tôi tin rằng đọc rõ ràng câu hỏi là OP muốn nối thêm vào 'file1.ext', thêm nội dung bổ sung vào tệp hiện có đó trong nhiều lần lặp lại, trái ngược với việc thêm các tệp bổ sung. –