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

问题描述 投票:0回答:2

我正在将一些 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)

当我压缩文件时,第一行的第一列是一组奇怪的字符并导致 第一行实际上有 4 列 第2行和第3行都可以

我尝试了不同的数据,并且总是在第一行的第一列中看到这种行为。 代码有什么问题吗?

作为参考,这是我在压缩文件中看到的内容

?‹? #,eÿcara,vera,tara 
rar,mar,bar 
jump,lump,dump
python csv gzip
2个回答
0
投票

删除这一行:

    gz.write(mem_file.getvalue())

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


0
投票

删除此行:

gz.write(mem_file.getvalue())

(也是

getvalue()
,而不是
getValue()
)。
csv.writer()
已使用
io.TextIOWrapper
写入
gzip.GzipFile
,因此无需再次写入。

© www.soinside.com 2019 - 2024. All rights reserved.