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()
退出交互提示也会关闭。
我正在学习 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()
退出交互提示也会关闭。