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 : I/O operation on closed file.
私を助けてください、私は本当にPythonが初めてです。私はPython 2.7.3で働いています。よろしくお願いします。
正しくインデントします。 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
同じエラーはミキシング:タブ+スペースで発生します。
with open('/foo', 'w') as f:
(spaces OR tab) print f <-- success
(spaces AND tab) print f <-- fail