Lees 'n CSV deur 'n proxy met pandas en Requests
Haal 'n CSV met 'n gekonfigureerde Requests-transport, kontroleer die HTTP-resultaat en gee pandas 'n grepbuffer om te ontleed.
Wanneer die HTTP-roete eksplisiete proxybeheer nodig het, haal die CSV eers op en laat pandas die resulterende grepe hanteer:
from io import BytesIO
import pandas as pd
import requests
route = {
'http': 'http://proxy.example:8080',
'https': 'http://proxy.example:8080',
}
with requests.get(
'https://data.example/report.csv',
proxies=route,
timeout=(5, 30),
) as response:
response.raise_for_status()
frame = pd.read_csv(BytesIO(response.content), encoding='utf-8')
Die proxy hanteer vervoer; die HTTP-proxelys verskaf eindpuntkandidate vir 'n publieke HTTP-roete. pandas ontvang 'n lêeragtige objek en pas sy gewone skeidings-, kolom-, enkodering- en datatipe-opsies toe.
Om die HTTP-resultaat voor ontleding te kontroleer, verhoed dat 'n duidelike HTTP-foutliggaam as 'n tabel behandel word. Inspekteer ook onverwagte inhoud: 'n aanmeld- of beleidsblad kan 200 terugstuur en steeds HTML wees in plaas van die gevraagde CSV.
Vir HTTP-URL's word read_csv se storage_options as versoekopskrifte deurgegee. Daardie koppelvlak is nie 'n proxies-kaart in Requests-styl nie.
'n Buffer het geen argiefnaam om kompressie-afleiding te lei nie. Spesifiseer compression wanneer die opgehaalde vrag dit vereis. Dieselfde eers-haal-benadering werk met read_excel en 'n grepbuffer, met die sigblad-enjin wat by daardie formaat pas.
Hierdie voorbeeld hou die hele antwoord in die geheue. Vir 'n groot uitvoer, stroom dit na 'n bestuurde plaaslike lêer en ontleed daardie lêer, met opdeling waar die datawerkvloei dit ondersteun.