2015-09-27 2 views
0

Я пытаюсь загрузить некоторые файлы через mechanize. Файлы размером менее 1 ГБ загружаются без каких-либо проблем. Однако, если файл больше, чем 1 Гб скрипт запускается из памяти:python mechanize получение файлов размером более 1 ГБ

mechanize_response.py скрипт выбрасывает из памяти в следующей строке себя .__ cache.write (self.wrapped.read())

__cache - cStringIO.StringIO, Кажется, что он не может обрабатывать более 1 ГБ.

Как загрузить файлы размером более 1 ГБ?

Благодаря

+0

Почему, по вашему мнению, StringIO не может справиться с этим? Разве не вероятно, что ваша программа исчерпала память? Попробуйте запустить его на 64-битной машине с большим объемом памяти. – strubbly

+0

Моя машина - 64-битная машина. И у меня 8 ГБ, и это единственная программа. – syd101

ответ

0

Это звучит, как вы пытаетесь загрузить файл в память, но не достаточно. Попробуйте использовать метод retrieve с именем файла, чтобы передать загруженный файл на диск.

+0

Вот что я уже использую. Я также попытался использовать browser.open(), и я читаю файл в кусках, а затем записываю его в локальный файл, но я все еще получаю ту же ошибку из памяти после 1 ГБ, но на этот раз от read() in в механизации _responce.py – syd101

0

Я, наконец, выяснил, что работает. За исключением использования browser.retrieve или browser.open Я использовал mechanize.urlopen, который вернул обработчик urllib2. Это позволило мне загрузить файлы размером более 1 ГБ.

Мне все еще интересно выяснить, как сделать работу с файлами размером более 1 ГБ.

+0

Звуки как это лучший ответ. Могу ли я предложить вам расширить вопрос, чтобы показать оператор retrieve, который вы используете, - что сделает вопрос и ответ более полезными для других читателей, что является точкой переполнения стека. – strubbly