情况:要下载的文件是一个大文件(> 100MB)。这需要相当长的时间,特别是在互联网连接缓慢的情况下。
问题:但是,我只需要文件头(前512个字节),它将决定是否需要下载整个文件。
问题:有没有办法只下载文件的前512个字节?
其他信息:目前,使用Python2.7中的urllib.urlretrieve
完成下载答案 0 :(得分:1)
我认为curl
和head
在这里比Python解决方案效果更好:
curl https://my.website.com/file.txt | head -c 512 > header.txt
编辑:此外,如果您绝对必须在Python脚本中使用它,则可以使用subprocess
执行curl
管道到head
命令执行
编辑2:对于完全Python解决方案:urlopen
函数(Python 2中的urllib2.urlopen
和Python 3中的urllib.request.urlopen
)返回一个类似文件的流,您可以使用read
函数on,允许您指定多个字节。例如,urllib2.urlopen(my_url).read(512)
将返回my_url
答案 1 :(得分:0)
如果您尝试阅读的网址以Content-Length
标头回复,那么您可以在Python中使用urllib2
获取文件大小。
def get_file_size(url):
request = urllib2.Request(url)
request.get_method = lambda : 'HEAD'
response = urllib2.urlopen(request)
length = response.headers.getheader("Content-Length")
return int(length)
可以调用该函数来获取长度并与某个阈值进行比较以决定是否下载。
if get_file_size("http://stackoverflow.com") < 1000000:
# Download