Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Web
  • » Requests (Python 3) и проблемы с отправкой/получением бинарных файлов [RSS Feed]

#1 Дек. 1, 2014 16:15:23

saw_tooth
Зарегистрирован: 2014-09-08
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

Requests (Python 3) и проблемы с отправкой/получением бинарных файлов

Всем добрый день.
Вожусь с автоматизацией REST API сервера.

На данный момент не могу принять картинку *.jpg в бинарном виде с сервера, при этом загрузить могу.
Проблема заключается в невозможности обработать каким-либо способом, приходящую строку.

Кто что может подсказать?

UPD. C base64 все было отлично, а вот бинари не могу записать в файл.

def downloadphoto(self, path):
l = open('pic.jpg', 'wb')
data = {'request': '{"phone":"+38012345678"}',
'request_name': 'GET_USER_PICTURE',
'request_type': 'HANDLE_FILES',
'requester_info': '{"referrer":"","device_id":"+3596520512229360680","device_phone_number":"+97253541213333"}'}
r = request(self.method, self.url, data=data, headers=self.headers)
source = r.text

print(source)

Дальше по коду, пытался и переводить в байты, и декодировать - все не подходит. в Чем причина может быть? Заранее известно что сервер данные не модифицирует

Отредактировано saw_tooth (Дек. 1, 2014 16:15:58)

Офлайн

#2 Дек. 1, 2014 18:29:13

saw_tooth
Зарегистрирован: 2014-09-08
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

Requests (Python 3) и проблемы с отправкой/получением бинарных файлов

Разобрался.
ответ: Читайте ВСЮ документацию, а не только те методы которые нужны.
для вывода бинарного контента есть метод

r.content

Офлайн

#3 Дек. 14, 2014 18:39:31

vax
Зарегистрирован: 2014-12-05
Сообщения: 10
Репутация: +  1  -
Профиль   Отправить e-mail  

Requests (Python 3) и проблемы с отправкой/получением бинарных файлов

Есть второй подход, возможно более правильный для больших файлов

r = requests.get(url, stream=True)
with open(local_filename, 'wb') as f:
    for chunk in r.iter_content(chunk_size=1024): 
        if chunk: # filter out keep-alive new chunks
            f.write(chunk)
    f.flush()



Python 3.4 Lover:)

Офлайн

#4 Дек. 15, 2014 03:31:35

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

Requests (Python 3) и проблемы с отправкой/получением бинарных файлов

vax
f.flush()
Это не надо. with вызывает закрытие, а закрытие вызывает выталкивание.



Офлайн

  • Начало
  • » Web
  • » Requests (Python 3) и проблемы с отправкой/получением бинарных файлов[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version