2013-09-23 9 views
48
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) 

Qui, p è un dizionario, w e c entrambi sono stringhe.ValueError: operazione di I/O su file chiuso

Quando provo a scrivere nel file, le segnalazioni di errori:

ValueError : I/O operation on closed file. 

Help me, io sono veramente nuovo a Python. Sto lavorando con Python 2.7.3 Grazie in anticipo.

risposta

76

Rientro corretto; for dichiarazione dovrebbe essere all'interno with blocco:

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) 

di fuori del blocco with, il file viene chiuso.

>>> with open('/tmp/1', 'w') as f: 
...  print f.closed 
... 
False 
>>> print f.closed 
True 
+0

Grazie! Mi hai risparmiato ore di sforzi inutili :) – Learner23

+0

Non riesco a credere che questo errore sia stato ripreso così tante volte !! – user1767754