私のpython(言語とかなり経験の浅い)とファイルI/O、および以下のエラーに出会っいじりだ:なぜこのオープンファイルにpythonが書き込まれませんか?
ValueError: I/O operation on closed file.
はかなり簡単なので、私がチェックするためのprint文にドロップoutfile
の状態、私のコードで何が起こっていたかを確認する:
import json
data = {'thing1' : 'foo', 'thing2' : 'bar'}
def writeToJSON():
with open('data.json', 'w') as outfile:
print outfile.closed # outputs 'False', as expected
jsonifiedData = json.dumps(data, indent=4, sort_keys=True, separators=(',', ':'), ensure_ascii=False)
outfile.write(unicode(jsonifiedData)) # trace identifies this line as the issue
writeToJSON()
インデントはきれいだが、だから何がここに起こっているの?
ファイルは実行時に開かれているように見えますが、通訳者はそれを伝えた後すぐに前記ファイルへの書き込みについて直ちに不平を言います。
ありがとうございます!
EDIT:
は、ファイル全体を追加しました。
また、これはblurp.py
を実行している完全な出力である:あなたの側の問題で何
False
Traceback (most recent call last):
File "blurp.py", line 11, in <module>
writeToJSON()
File "blurp.py", line 9, in writeToJSON
outfile.write(unicode(jsonifiedData))
ValueError: I/O operation on closed file
トレースバックエラーを表示できますか? –
私のLinuxでこれをチェックしたところ、すべてが問題ないようです。 – wanderlust
@wanderlust、hm ...私はmacOS上で、Python 2.7.13、おそらくシステムのことです...私は私のLinuxマシンでもこれを試してみます。 – nrebhun