python - 带有有效 JSON 的 Python json.load(file) 错误
问题描述
我有一个关于在 Python 中使用 json lib 时遇到的问题的问题。
我想使用以下代码使用 json.load(file) 命令读取 json 文件:
import json
filename= '../Data/exampleFile.json'
histFile= open(filename, 'w+')
print(json.load(histFile))
根据我发现的一些网站,我尝试读取的 JSON 文件是有效的:该验证的屏幕截图,因为我是新手,仍然缺乏声誉......
我收到的错误消息如下:
File ".\testLoad.py", line 5, in <module>
print(json.load(histFile))
File "C:\Users\...\Python\Python37\lib\json\__init__.py", line 296, in load
parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
File "C:\Users\...\Python\Python37\lib\json\__init__.py", line 348, in loads
return _default_decoder.decode(s)
File "C:\Users\...\Python\Python37\lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Users\...\Python\Python37\lib\json\decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
好的,所以我相信问题不是文件,但 json.load(file) 在其他情况下对我有用。
遗憾的是,我无法自己弄清楚这个错误消息,所以如果有更多处理 Python-JSON 交互经验的人可以帮助我,那就太棒了。
解决方案
您打开文件进行写入:
histFile= open(filename, 'w+')
# ^^^^
该w
模式首先截断文件,因此文件为空(在这里也可以读取文件并不重要,+
尽管如此,但文件仍被截断)。请参阅open()
功能文档:
'w'
:打开写入,先截断文件)
其中没有要解析的 JSON 数据。这就是为什么异常告诉您在文件开头解析失败的原因:
Expecting value: line 1 column 1 (char 0)
第一行第一列没有数据。
如果您想在不先截断文件的情况下打开文件进行读取和写入,请使用'r+'
文件模式。
推荐阅读
- exchangewebservices - 读取 Exchange 快速传输流的任何 API
- java - gradle构建时未生成Clojure(clara规则)文件
- ada - GtkAda 简单窗口:找不到 pixbuf 加载程序或 mime 数据库
- r - 将“table1”-table 转换为 pdf 友好格式
- c# - 代码优先迁移中的 EFCore AlterColumn MaxLength
- amazon-web-services - Cloudformation:UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS 卡住问题
- r - lm.fit(x,y,offset = offset,singular.ok =singular.ok,...)中的错误:重复测量方差分析中的 0(非 NA)案例
- python - 尝试添加外部用户但收到以下错误(错误 403:org_Internal)
- python - (x,) 在 NumPy 形状中表示什么?
- javascript - 有没有办法让我的音乐不和谐机器人保存音量设置?