我知道泡菜可以很容易地使用
加载到python中import pickle
p = pickle.load(open("file.pkl"))
我想知道如何在python中的pyx / C代码中加载相同的pickle文件?我无法找到直接加载它的方法。
也许解决方案是加载python并将引用传递给C?
中的对象答案 0 :(得分:1)
简单的答案就是用Cython编译代码。那里的一切都将自动完成。
在Python C API的上下文中,您可以使用以下内容轻松复制此代码:
PyObject *file = NULL, *p = NULL;
PyObject *pickle = PyImport_ImportModule("pickle"); // import module
if (!pickle) goto error;
file = PyFile_FromString("file.pkl", "r"); // open("file.pkl")
if (!pickle) goto error;
p = PyObject_CallMethod(pickle, "load", "O", file); // pickle.load(file)
error:
Py_XDECREF(pickle);
Py_XDECREF(file);
这是针对Python 2完成的,而对于Python 3,open("file.pkl")
需要使用io模块来实现。