试图将数据帧移动到s3bu时出现编码错误

2024-10-03 06:20:00 发布

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

我可能很难做到这一点,所以我非常愿意接受建议。。。在

我想写一篇pd数据帧对象复制到一个S3 bucket,这样我就可以将它复制到Redshift数据库。这是最重要的一点:

import gzip
from io import StringIO, BytesIO
from boto.s3.connection import S3Connection

conn = S3Connection()
bucket = conn.get_bucket('my-bucket')
key = bucket.new_key('temp.gz')

fp, gzfp = StringIO(), BytesIO()

csvd = df.to_csv(fp, index=False, header=False)

fp.seek(0)

gzipped = gzip.GzipFile(fileobj=gzfp, mode='w')
gzipped.write(bytearray(fp.read(), 'utf-8'))
gzipped.close()

gzfp.seek(0)

key.set_contents_from_file(gzfp)

失败的原因是:

^{pr2}$

我被难住了。如何使gzfp不是一个像字节的对象?!?在

提前感谢您的帮助!在

编辑:

愚蠢的我!下面的评论是完全正确的,非常感谢!通过将boto.connection中对sendall的调用改为sendall(bytearray('xxx', 'utf-8'))修复了问题,现在一切正常。在

再次感谢!在


Tags: 对象keyfromimportbucketconnectionconnboto
1条回答
网友
1楼 · 发布于 2024-10-03 06:20:00

我建议你用ODO Library。(odo在内部使用boto进行AWS操作)您可以使用

$ conda install odo

下一步设置您的AWS credentials。在

现在可以使用odo将文件传输到S3。在

^{pr2}$

您可以将pd.Dataframe转换为以下任何格式:Conversion Types

相关问题 更多 >