直接写入二进制模式csv.wri文件

2024-09-30 00:26:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我现在使用下面的代码创建一个二进制文件,然后直接上传到AWS S3现在我被告知可以使用csv.writerdirectly写入二进制模式,并避免使用io.StringIO()执行额外的步骤。然而,我仍然很难弄清楚这是怎么回事。你能帮我吗?你知道吗

buffer = io.StringIO()
writer = csv.writer(buffer)
writer.writerow(["a", "b", "c"])
buffer_2 = io.BytesIO(buffer.getvalue().encode())

BUCKET_NAME = 'fbprophet'
OBJECT_NAME = 'blah.csv'

s3.upload_fileobj(buffer_2, BUCKET_NAME, OBJECT_NAME)

Tags: 文件csv代码nameioawsobjects3
1条回答
网友
1楼 · 发布于 2024-09-30 00:26:38

你在那里的东西在我看来是合理的。您链接到的帖子讨论如何写入文件,而不是在内存流中。文件可以以文本或二进制模式打开,这决定了它是对字符串(str)还是对原始字节(bytes)进行操作。但是io包中类似于内存文件的对象没有那么灵活:字符串用StringIO,字节用BytesIO。你知道吗

因为csv需要文本流(字符串),而boto需要二进制流(字节),所以转换步骤是必要的。你知道吗

不过,我建议将实际编码传递给encode()函数,以避免返回到Python的依赖于系统的默认值:

buffer_2 = io.BytesIO(buff.getvalue().encode('utf-8'))

相关问题 更多 >

    热门问题