2015-10-19 8 views
0

Я новичок в Python. Вот моя настройка среды:Загрузить csv-файл с помощью python 3

У меня есть Anaconda 3 (Python 3). Я хотел бы иметь возможность загрузить CSV-файл с веб-сайта: https://data.baltimorecity.gov/api/views/dz54-2aru/rows.csv?accessType=DOWNLOAD

Я хотел бы использовать библиотеку запросов. Я был бы признателен anyhelp за то, что я понял, как я могу использовать библиотеку запросов при загрузке CSV-файла в локальный каталог на моем компьютере.

+0

Вы обнаружили, что так лучше lution? Я считаю, что вы можете настроить размер буфера для лучшей производительности выборки. – apast

ответ

1

Рекомендуется загружать данные в виде потока и выгружать их в целевой или промежуточный локальный файл.

import requests 


def download_file(url, output_file, compressed=True): 
    """ 
    compressed: enable response compression support 
    """ 
    # NOTE the stream=True parameter. It enable a more optimized and buffer support for data loading. 
    headers = {} 
    if compressed: 
     headers["Accept-Encoding"] = "gzip" 

    r = requests.get(url, headers=headers, stream=True) 

    with open(output_file, 'wb') as f: #open as block write. 
     for chunk in r.iter_content(chunk_size=4096): 
      if chunk: # filter out keep-alive new chunks 
       f.write(chunk) 
     f.flush() #Afterall, force data flush into output file (optional) 

    return output_file 

Учитывая оригинальный пост:

remote_csv = "https://data.baltimorecity.gov/api/views/dz54-2aru/rows.csv?accessType=DOWNLOAD" 
local_output_file = "test.csv" 

download_file(remote_csv, local_output_file) 

#Check file content, just for test purposes: 
print(open(local_output_file).read()) 

Базовый код был извлечен из этого поста: https://stackoverflow.com/a/16696317/176765

Здесь вы можете получить более подробную информацию об использовании потока тела с запросами Lib:

http://docs.python-requests.org/en/latest/user/advanced/#body-content-workflow

+1

Спасибо, вот код, который я использовал. Это может показаться основным и будет признателен за любые изменения/обновления, чтобы сделать его лучше: импортные запросы r = requests.get ("https://data.baltimorecity.gov/api/views/dz54-2aru/rows.csv? accessType = DOWNLOAD ") с открытым ('test.csv', 'wb') как f: f.write (r.content) – user3049935

+0

Рассмотрите отредактированный пост как общий целевой код загрузки. Вы можете использовать его с любым форматом содержимого. – apast

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

  • Нет связанных вопросов^_^