【发布时间】:2014-09-22 09:52:21
【问题描述】:
我正在使用以下代码动态生成多个 csv 文件:
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)
为了节省空间,我想压缩它们。
使用gzip 模块非常简单:
with gzip.open("foo.gz", "w") as csvfile :
csvwrite = csv.DictWriter(csvfile, delimiter=',', fieldnames=fieldnames)
csvwrite.writeheader()
for row in data:
csvwrite.writerow(row)
但我想要 'zip' 格式的文件。
我尝试了zipfile 模块,但无法直接将文件写入 zip 存档。
相反,我必须将 csv 文件写入磁盘,使用以下代码将它们压缩为 zip 文件,然后删除 csv 文件。
with ZipFile(zipfilepath, 'w') as zipfile:
zipfile.write(csvfilepath, csvfilename, ZIP_DEFLATED)
如何将 csv 文件直接写入类似于 gzip 的压缩 zip?
【问题讨论】:
-
@J.F.Sebastian 感谢您的评论。更新
-
哇,使用 gzip 就是这么简单!在 Py3 上,我必须使用它来将字符串转换为字节,然后才能启动
csv.writer并写出csv_out_file = io.TextIOWrapper(outfile, encoding='utf-8', newline='', write_through=True)