Python的转换StringIO的二进制
问题描述:
我有一个简单的任务:在路易吉,店内熊猫数据帧在投寄箱CSV,使用Dropbox的 - 蟒蛇SDKPython的转换StringIO的二进制
通常(与S3,例如),你可以使用StringIO的作为一个文件像内存中的对象。它还伟大工程与熊猫df.to_csv()
不幸的是,Dropbox的SDK需要二进制类型,我不能怎么StringIO的转换成二进制:
with io.StringIO() as f:
DF.to_csv(f, index=None)
self.client.files_upload(f, path=path, mode=wmode)
TypeError: expected request_binary as binary type, got <class '_io.StringIO'>
ByteIO不会与df.to_csv()
工作...
答
如在this的答案中所看到的,dropbox需要一个字节对象,而不是文件,所以转换为BytesIO
将无济于事。但是,解决方案比这更简单。你需要做的就是将你的字符串编码为二进制:
csv_str = DF.to_csv(index=None) # get string, rather than StringIO object
self.client.files_upload(csv_str.encode(), path=path, mode=wmode)
+0
真棒,谢谢! –
试图用'str()'强制'BytesIO'字符串? –
嗯,我实际上需要相反 - 熊猫需要stringIO,我需要将结果转换为二进制的'dropbox' –