如何计算给定块号、大小和下载总大小的下载进度?
How to compute the progress of a download given the chunk number, its size and the total size of the download?
Python 的 urllib.request.urlretrieve() 接受一个函数,当从网络中获取每个块时将调用该函数。
该函数使用三个参数调用:块的渐进标识符、块的大小和下载的总大小。
根据这三个信息,我可以计算出已经获取的字节数吗?这将用于计算下载进度。
我很想这样做 chunk_number * chunk_size / download_size
,但我不确定所有块的块大小是否恒定。
您可以保留目前所见所有尺寸的总和 运行。
试试这个:
import urllib.request
def my_downloader(url, filename = None):
running_total = 0
def my_reporthook(count, size, total):
nonlocal running_total
running_total += size
print ("{}%".format(100*running_total//total))
return urllib.request.urlretrieve(url, filename, my_reporthook)
print (my_downloader('https://www.gutenberg.org/files/55146/55146-h.zip'))
Python 的 urllib.request.urlretrieve() 接受一个函数,当从网络中获取每个块时将调用该函数。
该函数使用三个参数调用:块的渐进标识符、块的大小和下载的总大小。
根据这三个信息,我可以计算出已经获取的字节数吗?这将用于计算下载进度。
我很想这样做 chunk_number * chunk_size / download_size
,但我不确定所有块的块大小是否恒定。
您可以保留目前所见所有尺寸的总和 运行。
试试这个:
import urllib.request
def my_downloader(url, filename = None):
running_total = 0
def my_reporthook(count, size, total):
nonlocal running_total
running_total += size
print ("{}%".format(100*running_total//total))
return urllib.request.urlretrieve(url, filename, my_reporthook)
print (my_downloader('https://www.gutenberg.org/files/55146/55146-h.zip'))