【问题标题】:Downloading large files in Python在 Python 中下载大文件
【发布时间】:2015-02-04 23:55:38
【问题描述】:

在 python 2.7.3 中,我尝试创建一个脚本来通过 Internet 下载文件。我使用 urllib2 模块。

在这里,我做了什么:

import urllib2

HTTP_client = urllib2.build_opener()
#### Here I can modify HTTP_client headers
URL = 'http://www.google.com'
data = HTTP_client.open(URL)
with open ('file.txt','wb') as f:
        f.write(data.read())

好的。效果很好。

问题是当我想保存大文件(数百 MB)时。我认为当我调用“打开”方法时,它会将文件下载到内存中。但是,大文件呢?它不会在内存中保存 1 GB 的数据!如果我失去连接会发生什么,所有下载的部分都丢失了。

如何像 wget 一样在 Python 中下载大文件?在 wget 中,它“直接”将文件下载到硬盘中。我们可以看到文件变大了。

我很惊讶没有方法“检索”来做类似的事情

HTTP_client.retrieve(URL, 'filetosave.ext')

【问题讨论】:

标签: python-2.7 urllib2


【解决方案1】:

要解决此问题,您可以一次读取块并将它们写入文件。

req = urllib2.urlopen(url)
CHUNK = 16 * 1024
with open(file, 'wb') as fp:
  while True:
    chunk = req.read(CHUNK)
    if not chunk: break
    fp.write(chunk)

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多