lorsque je me connecte à un lien d’appel d’API http://example.com/passkey=wedsmdjsjmdd
curl 'http://example.com/passkey=wedsmdjsjmdd'
Je reçois les données de sortie des employés sur un format de fichier csv, tel que:
"Steve","421","0","421","2","","","","","","","","","421","0","421","2"
comment peut analyser cela en utilisant python.
J'ai essayé:
import csv
cr = csv.reader(open('http://example.com/passkey=wedsmdjsjmdd',"rb"))
for row in cr:
print row
mais cela n'a pas fonctionné et j'ai eu une erreur
http://example.com/passkey=wedsmdjsjmdd No such file or directory:
Merci!
Vous devez remplacer open
par rllib.urlopen ou rllib2.urlopen .
par exemple.
import csv
import urllib2
url = 'http://winterolympicsmedals.com/medals.csv'
response = urllib2.urlopen(url)
cr = csv.reader(response)
for row in cr:
print row
Cela produirait le suivant
Year,City,Sport,Discipline,NOC,Event,Event gender,Medal
1924,Chamonix,Skating,Figure skating,AUT,individual,M,Silver
1924,Chamonix,Skating,Figure skating,AUT,individual,W,Gold
...
En utilisant pandas), il est très simple de lire un fichier csv directement à partir d’une url.
import pandas as pd
data = pd.read_csv('https://example.com/passkey=wedsmdjsjmdd')
Cela lira vos données sous forme de tableau, ce qui sera très facile à traiter
Vous pouvez aussi le faire avec le module de requêtes:
url = 'http://winterolympicsmedals.com/medals.csv'
r = requests.get(url)
text = r.iter_lines()
reader = csv.reader(text, delimiter=',')
Pour améliorer les performances lors du téléchargement d'un fichier volumineux, les éléments ci-dessous peuvent fonctionner un peu plus efficacement:
import requests
from contextlib import closing
import csv
url = "http://download-and-process-csv-efficiently/python.csv"
with closing(requests.get(url, stream=True)) as r:
reader = csv.reader(r.iter_lines(), delimiter=',', quotechar='"')
for row in reader:
# Handle each row here...
print row
En définissant stream=True
Dans la demande GET, lorsque nous transmettons r.iter_lines()
à csv.reader (), nous transmettons un générateur à csv.reader (). Ce faisant, nous permettons à csv.reader () de parcourir par la suite chaque ligne de la réponse avec for row in reader
.
Cela évite de charger la totalité du fichier en mémoire avant le traitement, ce qui réduit considérablement la surcharge de mémoire pour les fichiers volumineux.