Bonjour à tous !
Je cherche désespérément à résoudre un problème que je ne rencontre que sur la version 3.2 de python, puisque j'ai réussi avec la version 2.7.
Je cherche en fait à importer des données financières depuis Yahoo finance, sous forme de fichier .csv pour les traiter ensuite avec python. Mais je n'arrive pas à ouvrir le fichier .csv correctement, une histoire de code ASCII, utf-8, mais je n'ai pas réussi à en savoir plus malgré Google et la doc Python... :/
Voici mon code :
Et le message d'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 url = "http://ichart.finance.yahoo.com/table.csv?s=BNP.PA&d=5&e=26&f=2012&g=d&a=0&b=1&c=2012&ignore=.csv"#adresse correcte def Write_url(code,nom,url): file = urllib.request.urlopen(url) reader = csv.DictReader(codecs.EncodedFile(file, 'ASCII')) #Je pense avoir compris que c'est ici que ça coince... for row in reader: print(row) cursor.execute("insert into "+str(nom)+" values (:Date, :Open, :High, :Low, :Close, :Volume);", row)
Je ne comprends pas... Sur la version 2.7 il suffisait de faire urllib.urlopen(url) puis csv.Dictreader() et ça marchait tout seul, mais là Python demande une manip en plus et je ne vois pas laquelle.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Write_url(code,nom,url) File "C:\Yahoo Finance fi.py", line 87, in Write_url for row in reader: File "C:\Python32\lib\csv.py", line 109, in __next__ self.fieldnames File "C:\Python32\lib\csv.py", line 96, in fieldnames self._fieldnames = next(self.reader) csv.Error: iterator should return strings, not bytes (did you open the file in text mode?)
Merci pour votre aide,
Bonne soirée !
Partager