2016-05-02 49 views
1

S3バケットにファイルを書き込むためにPython 2.7とboto3に問題があります。具体的には、EC2インスタンス上のファイルに書き込んで閉じ、S3バケットに新しいファイルを書き込もうとすると、ファイルが書き込まれていますが空(0バイト)です。ここでは、コードスニペットです:python boto3がS3に書き込んで空のファイルになる

!/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バケットに何が間違っているのですか?

答えて

1

あなたのコードから、あなたが近い()関数を呼び出さないように、あなたは

!/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) 
1

のpythonでプレーン開い使用しないでください)(欠けているようです。それは反パターンであり、間違いを発見することは困難です。常に "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) 
+0

おかげですべてをこれをチェックしてください。 Mootに同意すると、この問題の可能性が完全に排除されます。素晴らしい助け - スティーブ –

関連する問題