Mit*_*ops 1 amazon-web-services python-3.x boto3
这里有一个关于原始 boto 上传的很好的问题和答案:
其中有一个回调:
k = Key(bucket)
k.key = 'my test file'
k.set_contents_from_filename(testfile,
cb=percent_cb, num_cb=10)
Run Code Online (Sandbox Code Playgroud)
虽然我看到 boto3 包需要回调:
我没有看到与 num_cb 参数等效的内容。如何获得upload_fileobj使用 boto3 的进度表?
s3.upload_fileobj(data, 'mybucket', 'mykey')
Run Code Online (Sandbox Code Playgroud)
如果不需要限制调用callback的次数,(而upload_fileobj没办法做到),
1.显示百分比
import os
import boto3
class Test:
def __init__(self):
self.total = 0
self.uploaded = 0
self.s3 = boto3.client('s3')
def upload_callback(self, size):
if self.total == 0:
return
self.uploaded += size
print("{} %".format(int(self.uploaded / self.total * 100)))
def upload(self, bucket, key, file):
self.total = os.stat(file).st_size
with open(file, 'rb') as data:
self.s3.upload_fileobj(
data, bucket, key, Callback=self.upload_callback)
Run Code Online (Sandbox Code Playgroud)
import os
import boto3
import progressbar
class Test2:
def __init__(self):
self.s3 = boto3.client('s3')
def upload_callback(self, size):
self.pg.update(self.pg.currval + size)
def upload(self, bucket, key, file):
self.pg = progressbar.progressbar.ProgressBar(
maxval=os.stat(file).st_size)
self.pg.start()
with open(file, 'rb') as data:
self.s3.upload_fileobj(
data, bucket, key, Callback=self.upload_callback)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5457 次 |
| 最近记录: |