我最初只使用了ujson,如下所示。这段代码已经运行了一段时间,我不知道我是如何破解它的。
import ujson as json
with open('performance_data.json', 'r') as f:
data = json.load(f)
它今天才开始发布一个ValueError
ValueError: Expected object or value
我尝试用ujson在终端中使用python加载.json文件,得到了同样的错误。然后,我尝试使用json包而不是ujson加载它,它在python终端上运行得很好。所以我添加了一个尝试,除了使用json而不是ujson,所以现在我的代码如下所示
import json
import ujson
with open('performance_data.json', 'r' as f:
try:
data = ujson.load(f)
except ValueError:
data = json.load(f)
然而,这仍然给我带来了问题。
json回溯:
File "live_paper.py", line 141, in main
data = json.load(f)
File "/usr/lib/python3.8/json/__init__.py", line 293, in load
return loads(fp.read(),
File "/usr/lib/python3.8/json/__init__.py", line 357, in loads
return _default_decoder.decode(s)
File "/usr/lib/python3.8/json/decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python3.8/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)
我通常会假设这意味着文件是空的。但是,我可以从脚本运行以下代码并查看文件内容。
with open('performance_data.json', 'r') as f:
print(f.readline())
我已经从脚本中检查了os.getcwd()是否正确。
总之,json.load(f)是从终端运行的,而不是在脚本运行时工作的。在终端,我可以筛选我的数据和一切看起来像它应该。
ujson.load()在终端或脚本中都不工作,而json.load()则不能从脚本中工作。
发布于 2022-06-10 17:11:08
问题是您的文件中没有有效的json来加载模块。您可以通过尝试使用f.read()
在with
语句中打印文件的内容来验证这一点。我知道您已经说过您尝试过了,但是文件不为空和具有有效的json之间有一个区别。如果找不到有效的json对象,则调用的函数将失败。
https://stackoverflow.com/questions/72577641
复制相似问题