ValueError: बंद फ़ाइल पर I / O ऑपरेशन


109
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)

यहाँ, pएक शब्दकोश है, wऔर cदोनों तार हैं।

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

ValueError: I/O operation on closed file.

जवाबों:


157

सही ढंग से इंडेंट; आपका 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.items():
        cwriter.writerow(w + c)

withब्लॉक के बाहर , फ़ाइल बंद है।

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

6

एक ही त्रुटि को मिलाकर : टैब + रिक्त स्थान उठा सकते हैं ।

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

1
सच है, लेकिन यह हमेशा अजगर में मामला है जब उन्हें सही मिश्रण?
नेबुलसर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.