ValueError: I/O-bewerking op gesloten bestand

Hier is peen woordenboek, wen czijn beide strings.

Als ik naar het bestand probeer te schrijven, meldt het de fout:

ValueError: I/O operation on closed file.

Antwoord 1, autoriteit 100%

Correct inspringen; uw for-instructie moet binnen de withblok:

import csv    
with open('v.csv', 'w') as csvfile:
    cwriter = csv.writer(csvfile, delimiter=' ', quotechar='|', quoting=csv.QUOTE_MINIMAL)
    for w, c in p.items():
        cwriter.writerow(w + c)

Buiten het blok withwordt het bestand gesloten.

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

Antwoord 2, autoriteit 4%

Dezelfde foutkan verhogen door mixen: tabs + spaties.

with open('/foo', 'w') as f:
 (spaces OR  tab) print f       <-- success
 (spaces AND tab) print f       <-- fail

Antwoord 3

Ik kreeg deze uitzondering bij het debuggen in PyCharm, aangezien er geen onderbrekingspunt werd bereikt. Om dit te voorkomen, heb ik een onderbrekingspunt toegevoegd net na het with-blok, en toen gebeurde het niet meer.


Antwoord 4

file = open("filename.txt", newline='')
for row in self.data:
    print(row)

Sla gegevens op in een variabele (file), dus je hebt een withnodig.


Antwoord 5

Ik had dit probleem toen ik een ongedefinieerde variabele binnen de with open(...) as f:gebruikte.
Ik heb de ongedefinieerde variabele verwijderd (of ik heb deze buiten gedefinieerd) en het probleem is verdwenen.

Other episodes