在 C++ 中保存数据,从 Python 加载 - 推荐的数据格式
Save Data in C++, Load from Python - Recommended Data Formats
我有一个 ROS/CPP 模拟器,可以将大量数据保存到 rosbag(大约 90 MB)。我想经常从 Python 读取这些数据,并且由于读取 rosbags 缓慢且麻烦,我目前有另一个 python 脚本读取 rosbag 并将相关内容保存到 HDF5 文件中。
如果能够直接从模拟器中保存数据(在 C++ 中),然后从我的脚本中读取(在 Python 中),那就太好了。所以我想知道我应该使用哪种数据格式。
应该是:
- 从 Python
快速加载
- 紧凑(最好是某种二进制文件)
- 易于使用
您可能想知道为什么我不直接从我的 C++ 模拟器保存到 HDF5,但这似乎并不容易。 Whosebug 等论坛上基本上什么都没有,HDF5 Group website 是不透明的,似乎有一些复杂的许可和非常糟糕的示例。我只是想要一些我今天下午可以得到的快速而肮脏的东西。运行。
我看到两个对您的问题有用的解决方案:
LV
: 可以直接以二进制形式存储到文件中的长度值。
JSON
:这不会增加你需要的数据,Python或C++中有很多库可以简化你的工作
Protocol Buffers 是一个在 C++ 和 Python 中具有语言绑定的选项,尽管今天下午它可能比 quick/dirty 运行 投入更多的时间。
您可能想看看 HDFql as it is a high-level language (similar to SQL) to manage HDF5 files. Amongst others, HDFql supports C++ and Python. There are some examples that illustrates how to use HDFql in these languages here。
我有一个 ROS/CPP 模拟器,可以将大量数据保存到 rosbag(大约 90 MB)。我想经常从 Python 读取这些数据,并且由于读取 rosbags 缓慢且麻烦,我目前有另一个 python 脚本读取 rosbag 并将相关内容保存到 HDF5 文件中。
如果能够直接从模拟器中保存数据(在 C++ 中),然后从我的脚本中读取(在 Python 中),那就太好了。所以我想知道我应该使用哪种数据格式。 应该是:
- 从 Python 快速加载
- 紧凑(最好是某种二进制文件)
- 易于使用
您可能想知道为什么我不直接从我的 C++ 模拟器保存到 HDF5,但这似乎并不容易。 Whosebug 等论坛上基本上什么都没有,HDF5 Group website 是不透明的,似乎有一些复杂的许可和非常糟糕的示例。我只是想要一些我今天下午可以得到的快速而肮脏的东西。运行。
我看到两个对您的问题有用的解决方案:
LV
: 可以直接以二进制形式存储到文件中的长度值。JSON
:这不会增加你需要的数据,Python或C++中有很多库可以简化你的工作
Protocol Buffers 是一个在 C++ 和 Python 中具有语言绑定的选项,尽管今天下午它可能比 quick/dirty 运行 投入更多的时间。
您可能想看看 HDFql as it is a high-level language (similar to SQL) to manage HDF5 files. Amongst others, HDFql supports C++ and Python. There are some examples that illustrates how to use HDFql in these languages here。