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

Tutaj p jest słownikiem, w i c oba są struny.ValueError: operacja We/Wy na zamkniętym pliku

Kiedy próbuję napisać w pliku zgłasza błąd:

ValueError : I/O operation on closed file. 

Pomóżcie mi, jestem naprawdę nowego do pytona. Pracuję z Pythonem 2.7.3 Z góry dziękuję.

Odpowiedz

76

Wcięcie poprawnie; for oświadczenie powinno być wewnątrz with bloku:

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) 

Poza blokiem with, plik zostanie zamknięty.

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

Dzięki! Oszczędziłeś mi godzin marnotrawstwa :) – Learner23

+0

Nie mogę uwierzyć, że ten błąd został sprawdzony tyle razy !! – user1767754

Powiązane problemy