zoukankan      html  css  js  c++  java
  • 新技能 get —— Python 断点续传下载文件

    from urllib.request import urlretrieve
    import sys
    import os
    
    prev_reported_download_percent = None
    
    # 首先定义下载 hook,作为 urllib.request.urlretrive 的关键字参数
    def download_hook(count, block_size, total_size):
        """ 接口是写死的 """
        global prev_reported_download_percent
        percent = int(count*block_size*100/total_size)
        if prev_reported_download_percent != percent:
            if percent % 5 == 0:
                sys.stdout.write('%s%%' % percent)
                sys.stdout.flush()
            else:
                sys.stdout.write('.')
                sys.stdout.flush()
            prev_reported_download_percent = percent
    
    def maybe_download(filename, force=False):
        """ force 表示是否强制下载 """
        if force or not os.path.exists(filename):
            print('Attempting to download')
            filename, _ = urlretrieve(url+filename, filename, reporthook=download_hook)
                # url+filename:表示文件的 url 地址,
                # filename 则为保存到本地时的文件名
            print('
    Download completed!')
        # statinfo = os.stat(filename)
        return filename

    比如对于 http://ufldl.stanford.edu/housenumbers/ 网站下的 train.tar.gz/test.tar.gz两文件,客户端的调用方式为:

    url = 'http://ufldl.stanford.edu/housenumbers/'
    train_filename = maybe_download('train.tar.gz')
    test_filename = maybe_download('test.tar.gz')
  • 相关阅读:
    C++
    Qt简介
    C语言
    C/C++
    swagger2 Illegal DefaultValue null for parameter type integer
    maven包引入问题ClassNotFoundException: org.elasticsearch.client.Cancellable
    mysql自定义排序
    使用node创建服务器 运行vue打包的文件
    rsync实现服务器之间同步目录文件
    将jar包发布到maven的中央仓库细节整理
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9421890.html
Copyright © 2011-2022 走看看