【问题标题】:python mechanize retrieving files larger than 1GBpython mechanize 检索大于 1GB 的文件
【发布时间】:2015-09-27 09:01:00
【问题描述】:

我正在尝试通过 mechanize 下载一些文件。下载小于 1GB 的文件不会造成任何问题。但是,如果文件大于 1GB,则脚本会耗尽内存:

mechanize_response.py 脚本在以下行抛出内存不足 self.__cache.write(self.wrapped.read())

__cache是​​一个cStringIO.StringIO,好像不能处理超过1GB的。

如何下​​载大于 1GB 的文件?

谢谢

【问题讨论】:

  • 为什么你认为 StringIO 不能处理它?您的程序内存不足的可能性更大吗?尝试在具有更多内存的 64 位机器上运行它。
  • 我的机器是64位机器。我有 8GB 内存,这是唯一运行的程序。

标签: python-2.7 mechanize-python


【解决方案1】:

听起来您正在尝试将文件下载到内存中,但内存不足。尝试使用带有文件名的retrieve 方法将下载的文件流式传输到光盘。

【讨论】:

  • 这就是我已经在使用的。我也尝试使用 browser.open() 并且我正在分块读取文件,然后将其写入本地文件,但是在 1GB 之后我仍然会从内存中得到相同的错误,但这次是从机械化 _responce.py 中的 read() 中得到的。跨度>
【解决方案2】:

我终于想出了一个解决办法。 除了使用 browser.retrieve 或 browser.open 我使用了 mechanize.urlopen ,它返回了 urllib2 处理程序。这让我可以下载大于 1GB 的文件。

我仍然有兴趣弄清楚如何使大于 1GB 的文件的检索工作。

【讨论】:

  • 听起来这是迄今为止最好的答案。我可以建议您扩展问题以显示您正在使用的检索语句 - 这将使问题和答案对其他读者更有用 - 这是堆栈溢出的点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-17
  • 1970-01-01
  • 2010-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多