Tôi đang tạo ra một số lượng file csv động, sử dụng đoạn mã sau:Làm thế nào để nén tệp csv thành lưu trữ zip trực tiếp?
import csv
fieldnames = ['foo1', 'foo2', 'foo3', 'foo4']
with open(csvfilepath, 'wb') as csvfile:
csvwrite = csv.DictWriter(csvfile, delimiter=',', fieldnames=fieldnames)
csvwrite.writeheader()
for row in data:
csvwrite.writerow(row)
Để tiết kiệm không gian, tôi muốn nén chúng.
Sử dụng các module gzip
là khá dễ dàng:
with gzip.open("foo.gz", "w") as csvfile :
csvwrite = csv.DictWriter(csvfile, delimiter=',', fieldnames=fieldnames)
csvwrite.writeheader()
for row in data:
csvwrite.writerow(row)
Nhưng tôi muốn các tập tin ở định dạng 'zip'.
Tôi đã thử mô-đun zipfile
, nhưng tôi không thể ghi trực tiếp tệp vào lưu trữ zip.
Thay vào đó, tôi phải ghi tệp csv vào đĩa, nén chúng vào tệp zip bằng mã sau và sau đó xóa tệp csv.
with ZipFile(zipfilepath, 'w') as zipfile:
zipfile.write(csvfilepath, csvfilename, ZIP_DEFLATED)
Làm cách nào để ghi tệp csv trực tiếp vào zip nén tương tự như gzip?
@ J.F.Sebastian cảm ơn nhận xét. đã cập nhật –