Индикатор выполнения При загрузке файла в dropbox
import dropbox
client = dropbox.client.DropboxClient('<token>')
f = open('/ssd-scratch/abhishekb/try/1.mat', 'rb')
response = client.put_file('/data/1.mat', f)
Я хочу загрузить большой файл в dropbox. Как я могу проверить прогресс? [Docs]
изменить: Загрузчик offeset такой же ниже как-то. Что я делаю не так?--6-->
import os,pdb,dropbox
size=1194304
client = dropbox.client.DropboxClient(token)
path='D:/bci_code/datasets/1.mat'
tot_size = os.path.getsize(path)
bigFile = open(path, 'rb')
uploader = client.get_chunked_uploader(bigFile, size)
print "uploading: ", tot_size
while uploader.offset < tot_size:
try:
upload = uploader.upload_chunked()
print uploader.offset
except rest.ErrorResponse, e:
print("something went wrong")
EDIT 2:
size=1194304
tot_size = os.path.getsize(path)
bigFile = open(path, 'rb')
uploader = client.get_chunked_uploader(bigFile, tot_size)
print "uploading: ", tot_size
while uploader.offset < tot_size:
try:
upload = uploader.upload_chunked(chunk_size=size)
print uploader.offset
except rest.ErrorResponse, e:
print("something went wrong")
1 ответов
upload_chunked
, as документация Примечания:
загружает данные из этой
ChunkedUploader
' sfile_obj
кусками, пока возникает ошибка. Вызывает исключение при возникновении ошибки, и может быть снова позвонил, чтобы возобновить загрузку.
так что да, он загружает весь файл (если произошла ошибка), прежде чем вернуться.
если вы хотите загрузить кусок за раз самостоятельно, вы должны использовать upload_chunk
и commit_chunked_upload
.
вот рабочий код, который показывает вам, как загружать один кусок за раз и печатать прогресс между кусками:
from io import BytesIO
import os
from dropbox.client import DropboxClient
client = DropboxClient(ACCESS_TOKEN)
path = 'test.data'
chunk_size = 1024*1024 # 1MB
total_size = os.path.getsize(path)
upload_id = None
offset = 0
with open(path, 'rb') as f:
while offset < total_size:
offset, upload_id = client.upload_chunk(
BytesIO(f.read(chunk_size)),
offset=offset, upload_id=upload_id)
print('Uploaded so far: {} bytes'.format(offset))
# Note the "auto/" on the next line, which is needed because
# this method doesn't attach the root by itself.
client.commit_chunked_upload('auto/test.data', upload_id)
print('Upload complete.')