• python之文件下载 (urllib模块urlretrieve方法)


    有很多时候需要从服务端下载文件,比如更新客户端的版本, 从服务端下载文件进行解析等很多的时候选下载文件操作,今天记录一下python 从服务端下载文件的操作,

    代码如下:

    #!/usr/bin/env python2
    # -*- coding: utf-8 -*-
    
    from urllib import urlretrieve
    
    class software(object):
    
        def __init__(self):
            super(software, self).__init__()
    
    
        def start(self):
    
            url = 'http://192.168.3.124:8074/ComputerSecConsole/upload/update/2.2/update.tar'
            local = './update.tar'
            try:
                urlretrieve(url, local, self.callbackfunc)  #
            except Exception as e:
                print "Exception"
    
    
        def callbackfunc(self,blocknum, blocksize, totalsize):
            '''回调函数
            @blocknum: 已经下载的数据块
            @blocksize: 数据块的大小
            @totalsize: 远程文件的大小
            '''
    
            print  "blocknum  ",blocknum,"blocksize ",blocksize,"totalsize ",totalsize
            percent = 100.0 * blocknum * blocksize / totalsize
            if percent > 100:
                percent = 100
            print "%.2f%%" % percent,"    ",blocknum *blocksize,"    ",totalsize
    
    
    if __name__ == '__main__':
        print("main")
        s = software()
        s.start()

    运行结果:

    [root@localhost text]# python text.py
    main
    blocknum   0 blocksize  8192 totalsize  788170240
    0.00%      0      788170240
    blocknum   1 blocksize  8192 totalsize  788170240
    .................
    100.00%      788168704      788170240
    blocknum   96213 blocksize  8192 totalsize  788170240
    100.00%      788176896      788170240

    主要函数 :  urlretrieve

    参数说明:
    url:外部或者本地url
    filename:指定了保存到本地的路径(如果未指定该参数,urllib会生成一个临时文件来保存数据);
    reporthook:是一个回调函数,当连接上服务器、以及相应的数据块传输完毕的时候会触发该回调。我们可以利用这个回调函数来显示当前的下载进度。
    data:指post到服务器的数据。该方法返回一个包含两个元素的元组(filename, headers),filename表示保存到本地的路径,header表示服务器的响应头

    但是此程序还不过完善,在下载大的文件中,突然断网,会出现死循环,下一部解决这个问题,  加油!!

  • 相关阅读:
    简单的文件上传html+ashx
    URL重写
    图解classloader加载class的流程及自定义ClassLoader
    Linux下PS命令详解
    JAVA字符串格式化-String.format()的使用
    JAVA String.format 方法使用介绍
    MVC设计模式(Python)
    Jupyter NoteBook 的快捷键使用指南
    Hive常用函数
    Hive Tutorial(一)
  • 原文地址:https://www.cnblogs.com/wanghuixi/p/12116005.html
Copyright © 2020-2023  润新知