1. ホーム
  2. python

[解決済み] ValueError : 閉じたファイルへのI/O操作

2022-01-28 04:11:14

質問

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 は辞書です。 wc はどちらも文字列です。

ファイルに書き込もうとすると、エラーが報告されます。

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