小编Win*_*ked的帖子

如何在Python 3中将CSV Writer与GZIP文件一起使用?

我正在尝试将一些代码从Python 2.7移植到Python 3.2to3工具适用于基本语法和包更改,但现在我们遇到了一些奇怪的副作用.

我有以下代码块.它使用gzip模块打开临时文件名.

f = NamedTemporaryFile(delete=False)
f.close()
fn = f.name + '.gz'
os.rename(f.name, fn)
fz = gzip.open(fn, 'wb')
writer = csv.writer(fz, delimiter='\t', lineterminator=lt)
for row in table:
    writer.writerow(row)
fz.close()
Run Code Online (Sandbox Code Playgroud)

问题是执行此操作会给我以下错误:

File "/usr/local/Cellar/python3/3.4.2_1/Frameworks/Python.framework/Versions/3.4/lib/python3.4/gzip.py", line 343, in write
self.crc = zlib.crc32(data, self.crc) & 0xffffffff
TypeError: 'str' does not support the buffer interface
Run Code Online (Sandbox Code Playgroud)

我试过打开gzip文件为'w'而不是'wb',但无济于事.我猜测gzip模块需要一个字节数组,但CSV Writer不会或不会提供除字符串以外的任何内容.

人们如何在Python 3中做到这一点?

编辑:我应该提到这个代码块在Python 2.7中没有问题.

python csv python-3.x

4
推荐指数
1
解决办法
4256
查看次数

标签 统计

csv ×1

python ×1

python-3.x ×1