import csv
with open('v.csv', 'w') as csvfile:
cwriter = csv.writer(csvfile, delimiter=' ', quotechar='|', quoting=csv.QUOTE_MINIMAL)
for w, c in p.iteritems():
cwriter.writerow(w + c)
Ici, p
est un dictionnaire, w
et c
sont des chaînes.
Lorsque j'essaie d'écrire dans le fichier, il signale une erreur:
ValueError : I/O operation on closed file.
Aidez-moi, je suis vraiment nouveau en python. Je travaille avec Python 2.7.3 Merci d'avance.
Indenter correctement; L'instruction for
devrait être à l'intérieur du bloc with
:
import csv
with open('v.csv', 'w') as csvfile:
cwriter = csv.writer(csvfile, delimiter=' ', quotechar='|', quoting=csv.QUOTE_MINIMAL)
for w, c in p.iteritems():
cwriter.writerow(w + c)
En dehors du bloc with
, le fichier est fermé.
>>> with open('/tmp/1', 'w') as f:
... print f.closed
...
False
>>> print f.closed
True
Même erreur peut augmenter de mélange: onglets + espaces.
with open('/foo', 'w') as f:
(spaces OR tab) print f <-- success
(spaces AND tab) print f <-- fail