urlretrieve 如何给文件下载设置下载进度?

#python
#xiaodeng
#如何给文件下载设置下载进度?


import urllib

def callbackinfo(down,block,size):
    '''
    回调函数:
    down:已经下载的数据块
    block:数据块的大小
    size:远程文件的大小
    '''
    per=100.0*(down*block)/size
    if per>100:
        per=100
    print '%.2f%%'%per
    
url='http://www.sina.com.cn'
local='sina.html'
urllib.urlretrieve(url,local,callbackinfo)


local
    #参数 finename 指定了保存本地路径(如果参数未指定,urllib会生成一个临时文件保存数据。)
  【新增】local参数的数值如果只是单纯的文件名字,如test.html,test.txt等等,则默认将下载的文件保存在当前运行的py脚本路径下面 
  【新增】比如:urllib.urlretrieve('http://zzk.cnblogs.com/','index.html')
reporthook: #是一个回调函数,当连接上服务器以及相应数据块传输完毕时会触发该回调,我们就可以利用该回调函数来显示当前的下载进度。
  【新增】下载状态的报告,他有多个参数,
    1)参数1:当前传输的块数
    2)参数2:块的大小
    3)参数3,总数据大小

【新增】urlretrieve函数返回结果有2个参数:
    1)filename,文件名
    2)HTTPMessage对象,这个就是urllib.urlopen()函数的info()返回结果
    3)比如:
      filename,info=urllib.urlretrieve('http://zzk.cnblogs.com/','index.html')
      print info
posted @ 2015-11-02 18:44  Xiao|Deng  阅读(1642)  评论(0编辑  收藏  举报