如何跟踪从站点下载文件的功能的工作

时间:2019-07-18 14:35:24

标签: python-3.x pycharm jupyter

我正在编写一个程序,该程序应该下载大的tar文件(1.5 GB),对于小文件来说下载成功,可以通过下载进行检查。但是对于大文件,这将需要等待相当长的时间。如何跟踪此文件的下载过程?

directory = os.getcwd()
path = directory + '/europarl.tgz'
print(directory)
print(path)

if "europarl.tgz" in os.listdir(directory):
    print("yep")
else:
    print("nope")
    urlretrieve.content('http://www.statmt.org/europarl/v7/europarl.tgz', path)
    print("yep")

1 个答案:

答案 0 :(得分:0)

您可以将第三个参数传递给urlretrieve,称为reporthook。它必须是一个接受3个数字参数的函数:一个chunk数字,block sizetotal size of the download(如果未知,则为-1)。

有关更多信息,请咨询this。该函数可能看起来像这样:

def reporthook(chunk_n, block_size, download_size):
    global start_time
    if chunk_n == 0:
        start_time = time.time()
        return
    duration = time.time() - start_time
    progress_size = int(chunk_n * block_size)
    speed = int(progress_size / (1024 * duration))
    percent = int(chunk_n * block_size * 100 / download_size)
    sys.stdout.write("\r...%d%%, %d MB, %d KB/s, %d seconds passed" %
                    (percent, progress_size / (1024 * 1024), speed, duration))
    sys.stdout.flush()

if __name__ == '__main__':
    urllib.urlretrieve(url, filename, reporthook)

您还可以检查显示进度条的软件包tqdm