【发布时间】:2019-08-16 06:51:44
【问题描述】:
我目前使用以下代码创建一个二进制文件,然后直接上传到AWS S3 现在我被告知可以使用csv.writer directly 写入二进制模式并避免使用@ 的额外步骤987654325@。但是,我仍然很难弄清楚它是如何工作的。你能帮我解决这个问题吗?
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)
【问题讨论】:
-
python 版本 2 还是 3?
-
我是
Python 3 -
我在帖子中提到了那个链接,但这就是我卡住的地方,我不明白如何修改我的代码来管理它。
-
我不相信这是重复的。 @JoeyCoder 不是在写入文件,而是在内存中写入类似文件的对象,因此将标志传递给
open不会削减它。我已经写了一个答案,简而言之:你的方法很好,我看不到显着改进它的方法。请务必传递encoding('utf-8'),因为 Python 的默认编码是系统相关的。
标签: python python-3.x