У меня есть API, из которого я могу получить файлы. Я делаю это, используя urllib3
в python
.
например,
url = "https://example.com/api/files/13"
r = http.request('GET', url, headers=headers)
, где заголовки содержат информацию для аутентификации.
При декодировании всех данных в ответе получите тот же результат, что и следовало ожидать. Я подтвердил это с помощью ответа в информационном терминале сети моего браузера:
load = json.loads(r.data.decode('utf-8'))
data = load['data']
data
на данном этапе представляет собой длинную строку, содержащую символы, цифры и внешний вид, в зависимости от файла, аналогично dG0seHJheSxtZWRQaG90b24uU04yMDE2LUlSMDA3LkltUmlfRGV0X3BvcyxtZWRQaG90b24uU04yMDE2LUlSMDA3LkltUmlfRGV0X3ZlbCxtZWRQaG90b24uU04yMDE2LUlSMDA3LkltUmlfRGV0X2FjYyxtZWRQaG90b24uU04yMDE2LUlSMDA3LkltUmlfUm5nX3BvcyxtZWRQaG90b24uU04yMDE2LUlSMDA3LkltUmlfUm5nX3ZlbCxtZWRQaG90b...
, продолжая после точек. Но это всего лишь CSV-файл.
Единственная проблема, с которой я сталкиваюсь сейчас, - это сохранение данных на диске. До сих пор я пытался:
with open(dst_file, 'wb') as out_file:
out_file.write(data)
Вместо outfile.write(...)
Я также пытался shutil.copyfileobj(r, out_file)
, но тоже не работает.
Я думаю, это зависит от представленияДанные у меня есть. Я думаю, что иметь его в виде строки не очень полезно. Но как его сохранить?
РЕДАКТИРОВАТЬ: Одна вещь, которую, возможно, следует отметить: URL-адрес API не содержит файл, поэтому вызов будет перенаправлен. Я попытался сделать это с другим файлом из Интернета, здесь я сразу же получил нужные данные при доступе к >> r.data
.