Найти - Пользователи
Полная версия: Неверная загрузка файла при использовании Grab
Начало » Python для новичков » Неверная загрузка файла при использовании Grab
1
lukaville
Пытаюсь загрузить файл с помощью Grab:
g.setup(log_file = 'file.torrent')
g.go('http://freshon.tv/download.php?id=' + fileid + '&type=torrent')

Файл успешно сохраняется, но не читается. Все торрент-клиенты пишут, что файл невалиден. Действительно, если сравнить файл, скаченный из браузера и файл, скаченный этим способом видно, что второй файл отличается, в приложении оригинальный файл из браузера и файл скаченный с помощью Grab. Подскажите, пожалуйста, в чем проблема!
lukaville
Файлы в прикреплении
alexey-grom
У меня оба способа работают

import sys
from grab import Grab
grab = Grab()
grab.setup(log_file='/tmp/work/1.torrent')
grab.go('http://d.rutor.org/download/185141')
with open('/tmp/work/2.torrent', 'wb') as f:
    f.write(grab.response.body)
    f.close()
sys.exit()

Скорее всего что-то в pycurl. Какая система?
reclosedev
Скорее всего дело в том, что log_file открывается в текстовом режиме ('w') grab/base.py#cl-438
Сохраняйте файл как в посте alexey-grom (в бинарном режиме ‘wb’).

lukaville
Спасибо, помог способ alexey-grom
lorien
Опция log_file исключительно для отладки. Если надо сохранять содержимое response, то самый правильный путь использовать response.save, где учтён момент с “wb” режимом записи:

g.response.save('/path/to/file')

ну или

open('/path/to/file, ‘wb’).write(g.resbponse.body)
asilyator
Блжад, как бесит винда с ее текстовым режимом. А в тройке еще и строки можно писать только в текстовый файл. Что делать?
lorien
> Что делать?
В чём проблем, не понял.
asilyator
lorien
В чём проблем, не понял.
Если открыть файл не в двоичном режиме, винда заменяет \r на \r\n.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB