Seite 1 von 1

Mit pandas eine csv aus einer URL lesen

Verfasst: Montag 22. Juli 2013, 19:49
von BastiL
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?

Re: Mit pandas eine csv aus einer URL lesen

Verfasst: Montag 22. Juli 2013, 19:54
von 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.

Re: Mit pandas eine csv aus einer URL lesen

Verfasst: Montag 22. Juli 2013, 20:17
von BastiL
Tatsache. Ich wusste nicht, dass nach dem read() die Datei "leer" ist.