我正在修改python(对语言相当缺乏经验)和文件i / o,并遇到以下错误:
ValueError: I/O operation on closed file.
非常简单,所以我放入了一个打印语句来检查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()
缩进似乎很干净,所以这里发生了什么?
该文件在运行时显示为打开状态,但解释器在传达之后立即抱怨写入该文件。
谢谢!
修改
添加了整个文件。
此外,这是运行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
答案 0 :(得分:0)
不确定你身边的问题是什么,但我尝试了相同的代码(python 3.5)并且它正在运行。
>>> import json
>>> data = {'thing1' : 'foo', 'thing2' : 'bar'}
>>> def writeToJSON():
with open('data.json', 'w') as outfile:
print (outfile.closed)
jsonifiedData = json.dumps(data, indent=4, sort_keys=True, separators=(',', ':'), ensure_ascii=False)
outfile.write(str(jsonifiedData))
>>> writeToJSON()
False
>>>
和data.json的内容是
{
"thing1":"foo",
"thing2":"bar"
}
答案 1 :(得分:0)
感谢所有帮助过的人,并感谢@ rlee827解决这个问题!