Mit pandas eine csv aus einer URL lesen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
BastiL
User
Beiträge: 135
Registriert: Montag 7. Juli 2008, 20:22

Hallo zusammen,

wenn ich den Python-eigenen csv-Reder nehme, dann funktioniert es so:

Code: Alles auswählen

import pandas
import urllib

csv_url = 'http://www.comdirect.de/inf/kursdaten/historic.csv'
csv_file = urllib.urlopen(csv_url,urllib.urlencode([('DATETIME_TZ_START_RANGE_FORMATED', '01.01.2013'),
('ID_NOTATION', '31891860'),('INTERVALL', '16'),('OFFSET', '1'),('DATETIME_TZ_END_RANGE_FORMATED', '01.07.2013'),
('WITH_EARNINGS', 'true')]))

print csv_file.read()
.....
rs = pandas.read_csv(csv_file)
# wirft: CParserError: Passed header=0 but only 0 lines in file 

print csv_file.read() # ist jetzt leer!
An read_csv darf "filepath_or_buffer: Either a string path to a file, or any object with a read method (such as an open file or StringIO)" übergeben werden. csv_file ist eine Instanz, eventuell ist das ein Problem. Ein Beispielcode macht es so:
rs = pandas.read_csv(StringIO(bytes_to_str(csv_file.read())))
Das funktioniert bei mir aber genauso wenig. Was mache ich da falsch?
BlackJack

@BastiL: Nach dem Du die „Datei“ komplett gelesen hast, sendet der Webserver die nicht auf magische Weise *noch einmal*. Nimm das ``print cvs_file.read()`` raus.
BastiL
User
Beiträge: 135
Registriert: Montag 7. Juli 2008, 20:22

Tatsache. Ich wusste nicht, dass nach dem read() die Datei "leer" ist.
Antworten