【发布时间】:2012-04-24 20:07:11
【问题描述】:
我有多个返回 zip 文件的 URL。大多数文件,我可以使用 urllib2 库下载如下:
request = urllib2.urlopen(url)
zip_file = request.read()
我遇到的问题是其中一个文件的大小为 35Mb(压缩),我永远无法使用此库完成下载。我可以正常使用wget和浏览器下载它。
我曾尝试像这样以块的形式下载文件:
request = urllib2.urlopen(url)
buffers = []
while True:
buffer = request.read(8192)
if buffer:
buffers.append(buffer)
else:
break
final_file = ''.join(buffers)
但这也没有完成下载。没有引发错误,因此很难调试正在发生的事情。不幸的是,我无法在此处发布 url / 文件的示例。
有什么建议/意见吗?
【问题讨论】:
-
如果没有更多信息或重现它的 URL,很难调试。但是,为什么不直接使用
final_file = request.read()?您上面的代码正在构建一个字符串数组,它将所有数据存储在内存中,因此我认为没有任何理由使代码复杂化以一次读取块。 -
@benhoyt 这是我的第一次尝试,但没有成功。这就是为什么我试图将文件分成块
-
与 Masi 建议的不同,但可能与 @ChristopheD 相同。至少,问题和建议的解决方案似乎非常接近
标签: python download urllib2 zipfile