亚马逊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