ValueError : operazione di I/O su file chiuso

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.

Quando provo a scrivere nel file segnala l’errore:

ValueError : I/O operation on closed file.

Aiutarmi, sto veramente nuovo per python. Sto lavorando con Python 2.7.3
Vi ringrazio in anticipo.

InformationsquelleAutor GobSmack | 2013-09-23



2 Replies
  1. 118

    Trattino correttamente; for dichiarazione deve 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)

    Al di fuori del with blocco, il file viene chiuso.

    >>> with open('/tmp/1', 'w') as f:
    ...     print f.closed
    ... 
    False
    >>> print f.closed
    True
    • Grazie! Mi hai risparmiato ore di rifiuti sforzi 🙂
    • Non posso credere che questo errore era guardato così tante volte!!!!
    • Ho affrontato questo errore: dopo aver fatto un copia/incolla di un codice proveniente da Stackoverflow.com. Spazi & Schede sono stati mescolati
  2. 3

    Stesso errore può aumentare miscelazione: schede + spazi.

    with open('/foo', 'w') as f:
     (spaces OR  tab) print f       <-- success
     (spaces AND tab) print f       <-- fail
    • Vero, ma questo è sempre il caso in python durante il missaggio di un loro diritto?

Lascia un commento