У меня проблемы с загрузкой файла 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)

Evan Ryan

Ответов: 1

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

2022 WebDevInsider