2015-09-27 61 views
0

我想通过机械化下载一些文件。下载小于1GB的文件不会造成任何麻烦。然而,如果文件容量超过1GB的脚本运行的内存:蟒蛇机械化检索大于1GB的文件

的mechanize_response.py脚本在下面的行 自.__ cache.write引发内存(self.wrapped.read())

__cache是​​一个cStringIO.StringIO,它似乎不能处理超过1GB。

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

感谢

+0

为什么你认为StringIO无法处理它?你的程序是否更有可能耗尽内存?尝试在具有更多内存的64位机器上运行它。 – strubbly

+0

我的机器是64位机器。而我有8GB RAM,这是唯一运行的程序。 – syd101

回答

0

这听起来像你想下载的文件到内存,但你没有足够的。尝试使用带有文件名的retrieve方法将下载的文件流式传输到光盘。

+0

这就是我已经在使用的。我也试过使用browser.open(),我正在读取文件的块,然后将其写入本地文件,但我仍然得到1GB内存相同的错误,但这次从read()in机械化_responce.py – syd101

0

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

我仍然对搞清楚如何为大于1GB的文件进行检索工作感兴趣。

+0

声音这是迄今为止最好的答案。我可以建议你展开这个问题来显示你正在使用的检索语句 - 这将使问题和答案对其他读者更有用 - 这是堆栈溢出的关键。 – strubbly