gpt4 book ai didi

Python3 : Write csv directly to zipfile gives TypeError

转载 作者:太空宇宙 更新时间:2023-11-03 19:47:47 26 4
gpt4 key购买 nike

我想在 zip 文件中创建一个 csv 文件 - 不使用临时文件等。但 zipfile-handler 似乎需要一个字节对象。 csv-handler 似乎只输出 str。

处理这个问题的最佳/常见方法是什么?

测试.py:

import zipfile
import csv

with zipfile.ZipFile("test.zip",mode='w',compression=zipfile.ZIP_DEFLATED) as zip:
with zip.open('itemgroups.csv', mode='w') as csvfile:
csvoutput = csv.writer(csvfile, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
csvoutput.writerow(['id', 'value'])
~$ python3 test.py
Traceback (most recent call last):
File "test.py", line 7, in <module>
csvoutput.writerow(['id', 'value'])
File "/usr/lib/python3.7/zipfile.py", line 1094, in write
self._crc = crc32(data, self._crc)
TypeError: a bytes-like object is required, not 'str'

最佳答案

我想了想,创建了一个适配器类:

class zipadapter:
def __init__(self, zipfile):
self.zipfile = zipfile
def write(self, string):
self.zipfile.write(string.encode())

我这样使用它:

with zipfile.ZipFile("test.zip",mode='w',compression=zipfile.ZIP_DEFLATED) as zip:
with zip.open('itemgroups.csv', mode='w') as csvfile:
csvstrfile = zipadapter(csvfile)
csvoutput = csv.writer(csvstrfile, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
csvoutput.writerow(['id', 'value'])

而且......它有效。优雅的?我不知道。最好的办法?我对此表示怀疑 - 如果您有更好的想法,请毫不犹豫地回答;-)

关于Python3 : Write csv directly to zipfile gives TypeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60024127/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com