[python] ValueError : 닫힌 파일에 대한 I / O 작업

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.



답변

올바르게 들여 쓰기; 당신의 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


답변

탭 + 공백 을 혼합 하면 동일한 오류가 발생할 수 있습니다 .

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


답변