作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用以下代码动态生成许多 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?
最佳答案
使用 cStringIO.StringIO
模仿文件的对象:
with ZipFile(your_zip_file, 'w', ZIP_DEFLATED) as zip_file:
string_buffer = StringIO()
writer = csv.writer(string_buffer)
# Write data using the writer object.
zip_file.writestr(filename + '.csv', string_buffer.getvalue())
关于python - 如何将 csv 文件直接压缩成 zip 存档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25971205/
我是一名优秀的程序员,十分优秀!