bub*_*399 6 amazon-s3 cstringio boto3 python-3.6
我试图直接将文件写入S3而不创建本地文件然后上传.
我正在使用cStringIO在内存中生成一个文件,但是我无法找到在boto3中上传它的正确方法.
def writetos3(sourcedata, filename, folderpath):
s3 = boto3.resource('s3')
data = open(sourcedata, 'rb')
s3.Bucket('bucketname').put_object(Key= folderpath + "/" + filename, Body=data)
Run Code Online (Sandbox Code Playgroud)
上面是我之前使用的本地文件的标准boto3方法,没有本地文件它不起作用,我得到以下错误:coercing to Unicode: need string or buffer, cStringIO.StringO found
.
因为内存文件(我相信)已经被认为是开放的,我尝试将其更改为下面的代码,但它仍然无效,没有错误给出脚本只是挂在方法的最后一行.
def writetos3(sourcedata, filename, folderpath):
s3 = boto3.resource('s3')
s3.Bucket('bucketname').put_object(Key= folderpath + "/" + filename, Body=sourcedata)
Run Code Online (Sandbox Code Playgroud)
只是为了获得更多信息,我试图写的值看起来像这样
(cStringIO.StringO object at 0x045DC540)
有没有人知道我在做错了什么?
看起来你想要这个:
data = open(sourcedata, 'rb').decode()
Run Code Online (Sandbox Code Playgroud)
默认为utf8。另外,我鼓励您在 python3 下运行代码,并针对您的问题使用适当的语言标签。
| 归档时间: |
|
| 查看次数: |
1706 次 |
| 最近记录: |