python实现文件下载的方法总结

作者:hack1990 时间:16-03-17 阅读数:854人阅读

前端时间遇到一个通过url下载文件的需求,只需要简单的编写一个py脚本即可。从网上搜了下python实现文件下载的方法,总结如下,备查。


以下方法均已测试,环境win8.1  python2.6/2.7


方法一:


使用 urllib 模块提供的 urlretrieve() 函数。urlretrieve() 方法直接将远程数据下载到本地。



urlretrieve(url, [filename = None , [reporthook = None , [data = None ]]])

       说明:


参数 finename 指定了保存本地路径(如果参数未指定,urllib会生成一个临时文件保存数据。)


参数 reporthook 是一个回调函数,当连接上服务器、以及相应的数据块传输完毕时会触发该回调,我们可以利用这个回调函数来显示当前的下载进度。


参数 data 指 post 到服务器的数据,该方法返回一个包含两个元素的(filename, headers)元组,filename 表示保存到本地的路径,header 表示服务器的响应头。 


实例:


#!/usr/bin/python

#encoding:utf-8

import  urllib

import  os

def  Schedule(a,b,c):

     '''''

     a:已经下载的数据块

     b:数据块的大小

     c:远程文件的大小

    '''

     per  =  100.0  *  a  *  b  /  c

     if  per >  100  :

         per  =  100

     print  '%.2f%%'  %  per

url  =  'http://www.python.org/ftp/python/2.7.5/Python-2.7.5.tar.bz2'

#local = url.split('/')[-1]

local  =  os.path.join( '/data/software' , 'Python-2.7.5.tar.bz2' )

urllib.urlretrieve(url,local,Schedule)

######output######

#0.00%

#0.07%

#0.13%

#0.20%

#....

#99.94%

#100.00%

来源:http://www.nowamagic.net/academy/detail/1302861


方法二:


使用urllib的urlopen()函数


实例:



import  urllib2

print  "downloading with urllib2"

url  =  'http://www.pythontab.com/test/demo.zip' 

f  =  urllib2.urlopen(url) 

data  =  f.read() 

with  open ( "demo2.zip" ,  "wb" ) as code:     

     code.write(data)

 


方法三:


使用requests模块


requests模块下载:https://pypi.python.org/pypi/requests/#downloads


实例:



import  requests 

print  "downloading with requests"

url  =  'http://www.pythontab.com/test/demo.zip' 

r  =  requests.get(url) 

with  open ( "demo3.zip" ,  "wb" ) as code:

      code.write(r.content)


发表评论