当前位置: 主页 > 日志 > Python >

Python urllib2 通过content-length头获取文件大小

通过HEAD方法可以只读取HTTP应答头而不用下载文件本身,这样可以节省时间和资源。

常规的方式是使用httplib,这里选择使用urllib2主要是考虑要支持代理。

import urllib2

def get_file_size(url, proxy=None):
    """通过content-length头获取文件大小
    url - 目标文件URL
    proxy - 代理
    """
    opener = urllib2.build_opener()
    if proxy:
        if url.lower().startswith('https://'):
            opener.add_handler(urllib2.ProxyHandler({'https' : proxy}))
        else:
            opener.add_handler(urllib2.ProxyHandler({'http' : proxy}))
    request = urllib2.Request(url)
    request.get_method = lambda: 'HEAD'
    try:
        response = opener.open(request)
        response.read()
    except Exception, e:
        print '%s %s' % (url, e)
    else:
        return dict(response.headers).get('content-length', 0)

if __name__ == '__main__':
    print get_file_size(url='http://www.site-digger.com/uploads/soft/130313/China_Regions.csv')

[日志信息]

该日志于 2013-04-24 21:20 由 redice 发表在 redice's Blog ,你除了可以发表评论外,还可以转载 “Python urllib2 通过content-length头获取文件大小” 日志到你的网站或博客,但是请保留源地址及作者信息,谢谢!!    (尊重他人劳动,你我共同努力)
   
验证(必填):   点击我更换验证码

redice's Blog  is powered by DedeCms |  Theme by Monkeii.Lee |  网站地图 |  本服务器由西安鲲之鹏网络信息技术有限公司友情提供

返回顶部