gpt4 book ai didi

python - 如何从 C 中读取 python pickle 数据库/文件?

转载 作者:太空狗 更新时间:2023-10-29 16:53:15 25 4
gpt4 key购买 nike

我正在努力与多个音乐播放器集成。目前我最喜欢的是 exaile。

在新版本中,他们将数据库格式从 SQLite3 迁移到内部 Pickle 格式。我想知道是否有一种方法可以访问 pickle 格式文件而无需手动对格式进行逆向工程。

我知道有 cPickle python 模块,但我不知道它是否可以直接从 C 调用。

最佳答案

http://www.picklingtools.com/

有一个名为 PicklingTools 的库,我帮助维护它可能很有用:它允许您在 C++ 中形成数据结构,然后您可以 pickle/unpickle ...它是 C++,而不是 C,但不应该这几天是个问题(假设您使用的是 gcc/g++ 套件)。

该库是一个普通的 C++ 库(发行版中有 C++ 和 Python 的示例,展示了如何在 C++ 和 Python 的套接字和文件上使用该库),但一般来说,酸洗文件的基础知识是可用的.

基本思想是 PicklingTools 库为您提供来自 C++ 的“类似 python”的数据结构,以便您随后可以对 Python/C++ 进行序列化和反序列化。支持所有(?)基本类型:int、long int、string、None、complex、字典、列表、有序字典和元组。很少有 Hook 来执行自定义类,但这部分有点不成熟:库的其余部分非常稳定并且已经活跃了 8(?)年。

简单的例子:

#include "chooseser.h"
int main()
{
Val a_dict = Tab("{ 'a':1, 'b':[1,2.2,'three'], 'c':None }");
cout << a_dict["b"][0]; // value of 1

// Dump to a file
DumpValToFile(a_dict, "example.p0", SERIALIZE_P0);

// .. from Python, can load the dictionary with pickle.load(file('example.p0'))

// Get the result back
Val result;
LoadValFromFile(result, "example.p0", SERIALIZE_P0);
cout << result << endl;
}

网站上有更多文档(常见问题解答和用户指南)。

希望这有用:

再见,

里奇

http://www.picklingtools.com/

关于python - 如何从 C 中读取 python pickle 数据库/文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1296162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com