Je viens de télécharger ce fichier CSV via un formulaire, en l'envoyant à mon script Python CGI. Le téléchargement semble s'être terminé avec succès. Autorisations sur le dossier sont 777, sur le fichier sont 755.TypeError en ouvrant simplement un fichier avec csv.DictReader?
>>> import csv
>>> csvHandle = open('files/TestData.csv', "rb")
>>> csvRawRecordDicts = csv.DictReader(csvHandle)
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: __init__() takes at least 3 arguments (2 given)
Les valeurs sont les suivantes:
csvRawRecordDicts undefined,
csv = <module 'csv' from '/usr/lib/python2.3/csv.pyc'>,
csv.DictReader = <class csv.DictReader>,
csvHandle = <open file 'files/TestData.csv', mode 'rb'>
Le code fonctionne très bien sur mon ordinateur local avec Python 2.5. L'erreur se produit sur 2.3.
Quel est le processus de réflexion pour déboguer quelque chose comme ça? Où est-ce que je commence à chercher?
Les fichiers CSV sont du texte en-dessous; vous devriez utiliser un mode de "r". –
@Ignacio: ** UTTERLY WRONG ** Docs pour csv.reader et csv.writer (Python 2.3 à 2.6) dit "" "Si csvfile est un objet fichier, il doit être ouvert avec le drapeau 'b' sur les plates-formes où fait une différence. "" ". Il serait mieux exprimé par "" "Si csvfile est un objet fichier, il doit avoir été ouvert avec le drapeau 'b' sur les plateformes où cela fait une différence.Pour la portabilité, ouvrez avec 'b' inconditionnellement" "". De plus, l'OP est sur une plate-forme * x, où le drapeau 'b' est ignoré. –
@John: Ça va. –