У меня есть API, который возвращает данные файла PDF, и я хочу знать, как сохранить эти данные в файл.
Это фрагмент того, как выглядят данные:
%PDF-1.4
%äüöß
2 0 obj
<</Length 3 0 R/Filter/FlateDecode>>
stream
x�=��
1E����v���0�~���
Я попытался закодировать и декодировать его в base64, но затем PDF-файл оказался пустым и попытался преобразовать данные в байты для записи в файл, но все равно не получилось.
Я безуспешно пытался:
data = format(response.text,'b') with open('test.pdf', 'wb') as f: f.write(data)
а еще это:
data = base64.b64encode(response.text) with open('test.pdf', 'wb') as f: f.write(data)
data = format(response.text,'b') с open('test.pdf', 'wb') как f: f.write(data)
А также попробовал это: data = base64.b64encode(response.text) с open('test.pdf', 'wb') как f: f.write(data)
Рад, что это решено. В будущем, пожалуйста, отредактируйте свой вопрос, чтобы предоставить дополнительную информацию. Каждый вопрос должен стоять отдельно, комментарии могут быть удалены в будущем, а форматирование кода в вопросах работает гораздо лучше, чем в комментариях.






Из ваших комментариев вы сказали, что используете response.text для сохранения PDF в файл. При этом поток ответа предварительно преобразуется в текстовый ответ, и поэтому то, что вы там видите, — это не совсем правильный результат для загрузки бинарного файла.
Если вместо этого вы измените это на следующее, ваш PDF-файл должен быть сохранен с правильным двоичным содержимым:
with open('test.pdf', 'wb') as f:
f.write(response.content)
Большое спасибо, это сработало. Не могу поверить, что я этого не пробовал
Можете ли вы поделиться кодом, который вы использовали для «преобразования данных в байты для записи в файл»?