首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >只能从python终端加载json文件,而不能从脚本加载json文件,两者都不能使用ujson包。

只能从python终端加载json文件,而不能从脚本加载json文件,两者都不能使用ujson包。
EN

Stack Overflow用户
提问于 2022-06-10 16:56:41
回答 1查看 103关注 0票数 0

我最初只使用了ujson,如下所示。这段代码已经运行了一段时间,我不知道我是如何破解它的。

代码语言:javascript
运行
复制
import ujson as json

with open('performance_data.json', 'r') as f:
    data = json.load(f)

它今天才开始发布一个ValueError

代码语言:javascript
运行
复制
ValueError: Expected object or value

我尝试用ujson在终端中使用python加载.json文件,得到了同样的错误。然后,我尝试使用json包而不是ujson加载它,它在python终端上运行得很好。所以我添加了一个尝试,除了使用json而不是ujson,所以现在我的代码如下所示

代码语言:javascript
运行
复制
import json
import ujson

with open('performance_data.json', 'r' as f:
    try:
        data = ujson.load(f)
    except ValueError:
        data = json.load(f)

然而,这仍然给我带来了问题。

json回溯:

代码语言:javascript
运行
复制
  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)

我通常会假设这意味着文件是空的。但是,我可以从脚本运行以下代码并查看文件内容。

代码语言:javascript
运行
复制
with open('performance_data.json', 'r') as f:
    print(f.readline())

我已经从脚本中检查了os.getcwd()是否正确。

总之,json.load(f)是从终端运行的,而不是在脚本运行时工作的。在终端,我可以筛选我的数据和一切看起来像它应该。

ujson.load()在终端或脚本中都不工作,而json.load()则不能从脚本中工作。

EN

回答 1

Stack Overflow用户

发布于 2022-06-10 17:11:08

问题是您的文件中没有有效的json来加载模块。您可以通过尝试使用f.read()with语句中打印文件的内容来验证这一点。我知道您已经说过您尝试过了,但是文件不为空和具有有效的json之间有一个区别。如果找不到有效的json对象,则调用的函数将失败。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72577641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档