亚马逊s3上传大文件Python

实例如下:

import boto
from boto import connection
import os, math
from filechunkio import FileChunkIO

# fill in the id and key
conn = boto.connect_s3()
print conn
# fill in your bucket name
bucket = conn.get_bucket()
print bucket

# your file path want to upload
source_path = './'
source_size = os.stat(source_path).st_size

print source_size

mp = bucket.initiate_multipart_upload(os.path.basename(source_path))

chunk_size = 524288000
chunk_count = int(math.ceil(source_size / chunk_size))
for i in range(chunk_count + 1):
  print i
  offset = chunk_size * i
  bytes = min(chunk_size, source_size - offset)
  with FileChunkIO(source_path, 'r', offset=offset, bytes=bytes) as fp:
    mp.upload_part_from_file(fp, part_num=i + 1)

mp.complete_upload()
print 'ok'

参考网页 http://boto.readthedocs.org/en/latest/s3_tut.html

posted @ 2014-10-10 16:54  jaw-crusher  阅读(1224)  评论(0编辑  收藏  举报