高效读写大文件

Efficiently read and write large file

我有一个简单的程序,可以从网站读取数据,然后使用 urllib 将其写入文件。但是该文件 几百兆字节 大小并且 Python 不断引发 内存不足错误

import urllib
content = urllib.urlopen ( LINK )
f = file ("Something.mp4", "wb")
f.write ( content.read () )

然后当我下载并写入文件时,它引发了内存错误。 我正在考虑将 content 分成块并写入每个单独的块,但我只知道如何逐行而不是逐块读取文件。

更新:更好的是,有没有一种方法可以让我从服务器读取数据块,写入数据块,然后在 X 开始下载回来?因为我认为内存错误来自urllib文件实例的返回数据!

问:如何下载数据,高效写入文件,内存不足? ...and/or 实现此目标的 Pythonic 方法是什么?

奖励:如何找到我的系统可以处理的实际内存 limits/parameters? 示例:因为我有 4 G 的 RAM,这是否意味着我可以使用 4 G 的内存? ...What/When 会 Python 在超过一定的内存使用量后切断我吗?

规格: Windows 8、64 位、4GB RAM、1.3 GHZ CPU。 Python2.7

尝试使用请求作为块下载文件

filename="something.mp4"
r = requests.get(LINK, stream=True)
with open(local_filename, 'wb') as f:
  for block in r.iter_content(block_size=1024): 
     if block:
        f.write(block)

参考http://docs.python-requests.org/en/latest/user/advanced/#body-content-workflow