我遇到了Python 2.7和boto3的问题,无法将文件写入S3存储桶。具体来说,当我写入我的EC2实例上的文件时,关闭它,然后尝试将新文件写入S3存储桶,我看到文件被写入,但它是空的(0字节)。这是代码片段:
!/usr/bin/python
import boto3
newfile = open('localdestination','w')
newfile.write('ABCDEFG')
newfile.close
fnamebuck = 'bucketdestination'
client = boto3.client('s3')
inptstr = 'localdestination'
client.upload_file(inptstr, 'bucketname', fnamebuck)
我尝试修改权限,在文件关闭后添加延迟,更改我的变量名称以及各种代码更改,但无济于事。我没有收到任何错误消息。任何想法这个S3存储桶写错了什么?
答案 0 :(得分:3)
不要在python中使用plain open。这是反模式,很难发现错误。始终使用"使用open()"。在with上下文中,python将为您关闭文件(并刷新所有内容),因此没有任何意外。
请查看Not using with to open file
column.footer()
答案 1 :(得分:1)
从您的代码中看起来您似乎没有调用close()函数,您缺少()
!/usr/bin/python
import boto3
newfile = open('localdestination','w')
newfile.write('ABCDEFG')
newfile.close() # <---
fnamebuck = 'bucketdestination'
client = boto3.client('s3')
inptstr = 'localdestination'
client.upload_file(inptstr, 'bucketname', fnamebuck)