繁体   English   中英

使用 json.load() 从文件加载时出现 Rospy JSONDecodeError

[英]Rospy JSONDecodeError when loading from file with json.load()

我正在尝试将发布在主题上的数据存储到 JSON 文件中,但我不断收到 JSONDecodeError。

    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()命令成功创建文件。 但是加载失败。 我尝试使用文件内容运行它: []{} ,都给出了相同的异常:

[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)

这不是真正的描述性,我对 go 没有任何意见。 订阅者的运行方式是否存在不允许写入的内容? 你甚至可以通过回调 function 做到这一点吗? 我刚刚开始在 ROS 中工作,所以对于更有经验的人来说,这可能是简单或明显的事情。

.load .load()需要一个.read() 支持文件。 您只是打开文件进行阅读。 而是试试这个:

f = open(DB, 'r+')

json_array = json.load(f)

另请注意,如果您要存储和重新阅读主题数据,我建议您使用rosbag进行查找。 但是,这取决于您的实际应用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM