Я пытаюсь изменить способ ProgressBar (версия 2) отображает переданную/общий размер файла в Python 3. Вот код:Как отображать mb/s вместо b/s в progressbar и Python?
import progressbar
import requests
url = 'http://download.openbricks.org/sample/H264/big_buck_bunny_1080p_H264_AAC_25fps_7200K_short.MP4'
request = requests.get(url, stream=True)
file = open('test.mp4', 'wb')
file_size = int(request.headers['Content-Length'])
file_size_mb = round(file_size/1024/1024,2)
chunk_sz = 512
widgets = [progressbar.Bar(marker="#",left="[",right="]"),
progressbar.Percentage()," | ",
progressbar.FileTransferSpeed()," | ",
progressbar.SimpleProgress()," | ",
progressbar.ETA()]
bar = progressbar.ProgressBar(widgets=widgets, maxval=file_size).start()
i = 0
for chunk in request.iter_content(chunk_size=chunk_sz):
file.write(chunk)
i += len(chunk)
bar.update(i)
bar.finish()
print('File size: {0} MB'.format(file_size_mb))
file.close()
Выход:
[#### ##################### 91% | 741,3 KiB/s | 3397632 из 3714474 | Время: 00:00:08
Размер файла: 3,54 MB
Я хочу, чтобы иметь возможность сделать « из » будет отображаться в формате МБ (например, в file_size_mb), а не в байтах, поскольку по умолчанию он отображается по умолчанию.
Я прочитал документы в Progress Bar’s documentation, но я не смог найти ответ на свой вопрос в любом из приведенных здесь примеров.
Вы пытались просто передать 'file_size_mb' в конструктор ProgressBar вместо' file_size'? – Tryph
вы также можете увидеть виджет DataSize: http://progressbar-2.readthedocs.io/en/latest/progressbar.widgets.html#progressbar.widgets.DataSize – Tryph
Я попробовал, да. Однако это не работает. Бар думает, что он должен скачать, что в байтах все еще так, он быстро заполняется до 100%. О виджетах DataSize, я прочитал об этом в предоставленной вами ссылке, однако я не думаю, что я это понял. Может быть, потому, что я относительно новичок в Python или даже в программировании, но могу ли я помешать вам разобраться на примере? Благодаря! – ZZZ