Загрузка файла 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-адреса и имени файла назначения вы открываете файл назначения для записи в двоичном режиме, запрашиваете файл, а затем записываете содержимое запроса в файл. Сделано и сделано.