python boto3写入S3导致空文件

时间:2016-05-02 17:55:25

标签: python amazon-web-services amazon-s3 boto3

我遇到了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存储桶写错了什么?

2 个答案:

答案 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)
相关问题