#python-3.x #tqdm
Вопрос:
Когда я пытаюсь запустить следующий код, он выдает синтаксическую ошибку. Кто-нибудь может, пожалуйста, сказать мне, как исправить эту ошибку. Спасибо,
with tqdm(unit='blocks', unit_scale=True, leave=False, miniters=1, desc=f'Uploading {thumbnailname}......', total=filesize) as tqdm_instance:
session.storbinary('STOR ' thumbnailname, file, 2048,
callback=lambda sent: tqdm_instance.update(len(sent)))
Ответ №1:
Попробуйте это:
Это работает, если вы создадите функцию обратного вызова, которая будет обновлять tqdm на каждой итерации.
with tqdm(unit = 'b', unit_scale = True, leave = False, miniters = 1, desc = 'file name', total = filesize) as tqdm_instance:
def tqdm_callback(data):
# update progress bar and write out data
tqdm_instance.update(len(data))
raw_file.write(data)
# check to see if download has completed
if (raw_file.tell() == filesize):
# close down the progress bar
# prevents an extra ftp call which generates a timed out exception
tqdm_instance.close()
# make ftp data request
ftp.retrbinary(f"RETR suppl/{raw_filename}", tqdm_callback)
из библиотеки python methylprep
https://github.com/FoxoTech/methylprep/blob/master/methylprep/download/geo.py#L152
Тем не менее, я пришел сюда в поисках дополнительных примеров, потому что я думаю, что TQDM путается, если FTP-блоки содержат ошибки и их необходимо повторно отправить. В этом случае общее количество блоков для цикла изменится, и цикл может завершиться до того, как будут выполнены все блоки.