Python JSON 文件输入(写入模式)问题

Python file input (write mode) issue with JSON

我正在学习 Python 并且我正在关注以下官方文档:

Section: 7.2.2. Saving structured data with json for Python 3

我正在测试 json.dump() 函数以将我的 python 集转储到文件指针中:

>>> response = {"success": True, "data": ["test", "array", "response"]}
>>> response
{'success': True, 'data': ['test', 'array', 'response']}
>>> import json
>>> json.dumps(response)
'{"success": true, "data": ["test", "array", "response"]}'
>>> f = open('testfile.txt', 'w', encoding='UTF-8')
>>> f
<_io.TextIOWrapper name='testfile.txt' mode='w' encoding='UTF-8'>
>>> json.dump(response, f)

文件 testfile.txt 已经存在于我的工作目录中,即使它不存在,语句 f = open('testfile.txt', 'w', encoding='UTF-8') 也会重新创建它,并将其截断。

json.dumps(response) 将我的 response 集转换为有效的 JSON 对象,这样没问题。

问题是当我使用 json.dumps(response, f) 方法时,它实际上更新了我的 testfile.txt,但它被截断了。

我设法做了一个反向解决方法,比如:

>>> f = open('testfile.txt', 'w', encoding='UTF-8')
>>> f.write(json.dumps(response));
56
>>>

之后我的 testfile.txt 的内容变成了预期的:

{"success": true, "data": ["test", "array", "response"]}

甚至,这种方法也有效:

>>> json.dump(response, open('testfile.txt', 'w', encoding='UTF-8'))

为什么这种方法会失败?:

>>> f = open('testfile.txt', 'w', encoding='UTF-8')
>>> json.dump(response, f)

请注意,我没有从控制台收到任何错误;只是一个截断的文件。

您似乎没有退出交互式提示来检查文件。关闭文件以刷新它:

f.close()

退出交互提示也会关闭。