我知道 pickle 可以很容易地加载到 python 中
import pickle
p = pickle.load(open("file.pkl"))
我想知道如何在 python 中的 pyx/C 代码中加载相同的 pickle 文件?没找到直接加载的方法。
也许解决方案是在 python 中加载并传递对 C 中对象的引用?
最佳答案
简单的答案是使用 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 来实现模块。
关于python - 在 C 中加载 python pickled 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35768773/