2016-01-02 2 views
0

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

Это работы:

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)

+0

Что это значит * Это не работает * означает? Исключение? Нет сообщения об ошибке, но нет файла? –

+0

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

+0

Можете ли вы добавить полную трассировку стека на свой вопрос? Я хотел бы точно знать, какие строки имеют ошибку. – tdelaney

ответ

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

+0

Я сделал то, что у вас есть, и это не работает. Когда csv-1-0.csv.gz загружается, и я открываю его в блокноте, это простой HTML-код? То же самое происходит, когда я пытаюсь загрузить zip-папку. Благодарю. –

+0

@EvanRyan Что такое содержимое HTML-файла? Вероятно, это означает, что либо сервер некорректно настроен, либо ссылка переместилась (HTTP 404). Можете ли вы загрузить файл из своего веб-браузера? Если это так, то вам необходимо правильно настроить заголовки для вашего запроса GET. – MattDMo

+0

Я неправильно настроил заголовки для запроса GET. Теперь работает. Благодарю. –

Смежные вопросы