2013-09-23 9 views
6
import boto 
conn = boto.connect_s3('', '') 

mybucket = conn.get_bucket('data_report_321') 

ファイルをバケットからダウンロードするには、次のコードを使用します。botoを使用してファイルをアップロードする

for b in mybucket: 
    print b.name 
    b.get_contents_to_filename('0000_part_00', headers=None, cb=None, num_cb=10, torrent=False, version_id=None, res_download_handler=None, response_headers=None) 

しかし、私はにファイルをアップロードすることができないです。 AttributeError: 'str'オブジェクトに 'tell'属性がありません

send_file関数もset_contents関数も期待通りに機能しています。

for b in mybucket: 
    b.send_file('mytest.txt', headers=None, cb=None, num_cb=10, query_args=None, chunked_transfer=False, size=None) 
    b.set_contents_from_file('mytest.txt', headers=None, replace=True, cb=None, num_cb=10, policy=None, md5=None, reduced_redundancy=False, query_args=None, encrypt_key=False, size=None, rewind=False) 

botoを使用してローカルサーバーの現在のディレクトリからS3バケットにファイルをアップロードするにはどうすればよいですか?


アップデート: 私はset_contents_from_filename関数を呼び出す前に、最初のアップロードされたファイルのキー(ファイル名)を宣言する必要があります。

k = boto.s3.key.Key(mybucket) 
k.key = 'uploaded_file.txt' 
k.set_contents_from_filename("myteswt.txt") 

答えて

9

両方send_fileset_contents_from_file最初の引数にFileオブジェクトを取ります。文字列を渡す場合はset_contents_from_filenameと表示されます。 https://github.com/TimelyToga/upload_s3

python upload_s3.py <filename> [key_to_upload_as] 

指定したS3バケットに任意のファイルをアップロードします:

+2

set_contents_from_filenameでエラーは発生しませんが、ファイルは実際にそのバケットにアップロードされていません。何か不足していますか? – shantanuo

-2

あなたは、このユーティリティスクリプトを使用することができます。

アップロードするときは、set_contents_from_fileはpython Fileオブジェクトを取得します。

関連する問題