2013-09-23 16 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) 

Hier p ist ein Wörterbuch, w und c beide Strings sind.Valueerror: I/O-Operation auf geschlossene Datei

Als ich in die Datei zu schreiben versuchen, es meldet Fehler:

ValueError : I/O operation on closed file. 

Helfen Sie mir, ich bin zu Python wirklich neu. Ich arbeite mit Python 2.7.3 Vielen Dank im Voraus.

Antwort

76

richtig einrücken; for Anweisung sollte innerhalb with Block sein:

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) 

Außerhalb der with Block, die Datei geschlossen wird.

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

Vielen Dank! Du hast mir Stunden vergeblicher Bemühungen geschenkt :) – Learner23

+0

Ich kann nicht glauben, dass dieser Fehler so oft nachgeschlagen wurde !! – user1767754

Verwandte Themen