2013-09-23 34 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) 
İşte

, p üzerinde G/Ç işlemi, w ve c hem dizeleri bir sözlük olduğunu. Ben dosyasında yazmaya çalıştığınızdaValueError: Kapalı dosyası

o hata bildiriyor:

ValueError : I/O operation on closed file. 

Yardım beni, python için gerçekten yeni değilim. Python 2.7.3 ile çalışıyorum Önceden teşekkür ederiz.

cevap

76

Doğru girinti; for deyim with bloğunun içinde olmalıdır:

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) 

with bloğun dışında, dosya kapatılır.

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

Teşekkürler! Bana saatlerce harcanan çabaları kaydettiniz :) – Learner23

+0

Bu hatanın pek çok kez göründüğüne inanamıyorum! – user1767754