Загрузка файла csv.gz с URL в Python

У меня проблемы с загрузкой файла csv.gz из URL У меня нет проблем с загрузкой файла tar.gz. Для файла csv.gz я могу извлечь файл.gz и прочитать мой файл csv, было бы удобно, если бы я мог использовать URL-адрес вместо того, чтобы иметь csv-1.0.csv.gz перед этим.

Это работает:

import urllib.request
urllib.request.urlretrieve('http://www.mywebsite.com/csv-1-0.tar.gz','csv-1-0.tar.gz')

Это не работает:

import urllib.request
urllib.request.urlretrieve('http://www.mywebsite.com/csv-1-0.csv.gz','csv-1-0.csv.gz')

Я получаю эту ошибку: UnicodeEncodeError: кодек "ascii" не может кодировать символ "\xad" в позиции 9: порядковый номер не в диапазоне (128)

1 ответ

Решение

Как и предполагалось в самом начале документов для urllib.request отлично requests модуль рекомендуется для высокоуровневых клиентских интерфейсов http. Код довольно прост:

import requests

url = "http://www.mywebsite.com/csv-1-0.csv.gz"
filename = url.split("/")[-1]
with open(filename, "wb") as f:
    r = requests.get(url)
    f.write(r.content)

Как правило, после назначения URL-адреса и имени файла назначения вы открываете файл назначения для записи в двоичном режиме, запрашиваете файл, а затем записываете содержимое запроса в файл. Сделано и сделано.

Другие вопросы по тегам