Når HTTP-ruten kræver eksplicit proxykontrol, hentes CSV'en først, og pandas får lov at håndtere de resulterende bytes:

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')

Proxyen står for transporten; HTTP-proxylisten leverer kandidater til endpoints for en offentlig HTTP-rute. pandas modtager et fillignende objekt og anvender sine sædvanlige valg for afgrænsning, kolonner, kodning og datatyper.

Kontrol af HTTP-resultatet før parsing forhindrer, at en tydelig HTTP-fejltekst behandles som en tabel. Undersøg også uventet indhold: en login- eller politikside kan returnere 200 og stadig være HTML i stedet for den ønskede CSV.

For HTTP-URL'er videresendes read_csv's storage_options som anmodningsheadere. Det interface er ikke en proxies-mapping i Requests-stil.

En buffer har ikke et arkivfilnavn, der kan styre komprimeringsinferensen. Angiv compression, når den hentede payload kræver det. Samme hent-først-opstilling virker med read_excel og en bytebuffer, med den regnearksmotor, der passer til formatet.

Dette eksempel holder hele svaret i hukommelsen. Til en stor eksport, stream den til en administreret lokal fil og parse den fil, med chunking hvor dataarbejdsgangen understøtter det.

Relaterede artikler