python boto3写入S3会导致空文件

2024-10-01 17:25:00 发布

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

我在python2.7和boto3中遇到了一个问题,无法将文件写入S3存储桶。具体地说,当我在EC2实例上写入一个文件时,关闭它,然后尝试将新文件写入S3 bucket,我看到一个文件被写入,但它是空的(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桶写有什么问题吗?在


Tags: 文件实例代码client字节bins3bucket
2条回答

不要在python中使用纯open。这是反模式,很难发现错误。始终使用“with open()”。在with上下文中,python将为您关闭文件(并刷新所有内容),因此不会有任何意外。在

请检查一下这个Not using with to open file

import boto3
inptstr = 'localdestination'
with open(inptstr,'w') as newfile:
    newfile.write('ABCDEFG')

fnamebuck = 'bucketdestination'
s3 = boto3.client('s3')
s3.upload_file(inptstr, 'bucketname', fnamebuck)

从代码中看,似乎没有调用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)

相关问题 更多 >

    热门问题