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