带有有效JSON的Python json.load(file)错误

时间:2018-09-07 21:38:15

标签: python json io

对于在Python中使用json库时遇到的问题,我有一个疑问。

我想使用json.load(file)命令使用以下代码读取json文件:

import json

filename= '../Data/exampleFile.json'
histFile= open(filename, 'w+')
print(json.load(histFile))

根据我发现的某个网站,我尝试读取的JSON文件是有效的:a screenshot of that validation, because I'm new and still lack the reputation...

我收到的错误消息如下:

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交互经验的人可以帮助我,那就太好了。

1 个答案:

答案 0 :(得分:4)

您打开了文件进行写

histFile= open(filename, 'w+')
#                        ^^^^

w模式首先截断文件,因此文件为空(在这里+看到的文件也可以读取也没关系,但文件仍被截断)。参见open() function documentation

  

'w':可以进行写操作,首先将其截断)

其中没有要解析的JSON数据。这就是为什么异常告诉您在文件开始时解析失败的原因:

Expecting value: line 1 column 1 (char 0)

第一行第一列中没有数据。

如果您想打开文件同时读取和写入而不都将其截断,请使用'r+'作为文件模式。