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

यहाँ, p पर आपरेशन एक शब्दकोश, w और c दोनों तार कर रहे हैं।ValueError: मैं/हे बंद फ़ाइल

यह त्रुटि की सूचना जब मैं फ़ाइल में लिखने की कोशिश:

ValueError : I/O operation on closed file. 

मुझे मदद, मैं वास्तव में अजगर करने के लिए नया हूँ। मैं पाइथन के साथ काम कर रहा हूं 2.7.3 अग्रिम धन्यवाद।

उत्तर

76

इंडेंट सही ढंग से; for बयान with ब्लॉक के अंदर होना चाहिए:

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 ब्लॉक के बाहर, फ़ाइल बंद कर दिया है।

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

धन्यवाद! आपने मुझे अपशिष्ट प्रयासों के घंटे बचाए :) – Learner23

+0

विश्वास नहीं कर सकता कि यह त्रुटि कई बार देखी गई थी !! – user1767754

संबंधित मुद्दे