编写gzip csv文件在第一行引入随机字符

nbewdwxp  于 2023-11-14  发布在  其他
关注(0)|答案(2)|浏览(114)

我将一些CSV数据写入Python中的CSV gzip文件,如下所示

import csv
import gzip
import io

csv_rows=[["cara","vera","tara"],["rar","mar","bar"],["jump","lump","dump"]]
mem_file = io.BytesIO()
with gzip.GzipFile(fileobj=mem_file,mode="wb") as gz:
   with io.TextIOWrapper(gz, encoding='utf-8') as wrapper:
       writer = csv.writer(wrapper)
       writer.writerows(csv_rows)
       gz.write(mem_file.getvalue())
gz.close()
mem_file.seek(0)

字符串
当我gunzip文件的第一列在第一行是一个奇怪的字符集,并导致第一行实际上有4列第2和第3行是好的
我尝试了不同的数据,总是在第一行的第一列看到这种行为。代码有什么问题?
作为参考,这里是我在gunzipped文件中看到的

?‹? #,eÿcara,vera,tara 
rar,mar,bar 
jump,lump,dump

bqf10yzr

bqf10yzr1#

删除此行:

gz.write(mem_file.getvalue())

字符串
(also它是getvalue(),而不是getValue())。csv.writer()已经使用io.TextIOWrapper写入gzip.GzipFile,所以没有必要再次写入。

njthzxwz

njthzxwz2#

删除此行:

gz.write(mem_file.getvalue())

字符串
你会发现这一切都很好。csv模块将写入gzip对象,gzip将写入BytesIO对象。你不需要这个额外的步骤。

相关问题