首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用JSONDecodeError ()从文件加载时的Rospy json.load

用JSONDecodeError ()从文件加载时的Rospy json.load
EN

Stack Overflow用户
提问于 2021-11-23 21:13:00
回答 1查看 150关注 0票数 0

我试图将发布在主题上的数据存储到JSON文件中,但我一直得到一个JSONDecodeError。

代码语言:javascript
复制
    DB = '/home/path/data.json'
    f = open(DB, 'w+')

    json_array = json.load(fp=f)

    json_array.append(data)
    json.dump(json_array, f)
    f.close()

open()命令成功创建该文件。但是装载失败了。我尝试使用文件内容运行它:[]{},它们都给出了相同的例外:

代码语言:javascript
复制
[ERROR] [1637699609.562673]: bad callback: <function callback at 0x7fe36196b1f0>
Traceback (most recent call last):
  File "/opt/ros/noetic/lib/python3/dist-packages/rospy/topics.py", line 750, in _invoke_callback
    cb(msg)
  File "/home/path/scripts/extract_info_node.py", line 43, in callback
    json_array = json.load(fp=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)

这不是描述性的,我没什么可说的。订阅者的运行方式是否有不允许写作的地方?您甚至可以通过回调函数来完成这个任务吗?我刚刚开始在ROS中工作,所以对于更有经验的人来说,这可能是简单或明显的事情。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-24 03:38:31

.load()接受一个.read()支持文件。你打开文件只是为了阅读。相反,试着这样做:

代码语言:javascript
复制
f = open(DB, 'r+')

json_array = json.load(f)

另外,如果您正在存储和重新读取主题数据,我建议您可能使用罗布包。然而,这取决于实际应用程序。

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

https://stackoverflow.com/questions/70087888

复制
相关文章

相似问题

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