我正在导入用C编写的共享对象库,并调用一些使用Python.h库进行工作的包装函数。修改传递给C函数的Python变量
我有如下原型的函数:
PyObject *Cal_readFile(PyObject *self, PyObject *args);
我分析出下列元组:
PyArg_ParseTuple(args, "sO", &filename, &result)
从蟒蛇的调用如下:
result = []
status = Cal.readFile(filename, result)
print(result)
它被称为罚款,功能肯定运行。我的目标是修改调用的C函数中的result
变量。这正是我所做的。我修改了C函数中的结果变量,并使用result = Py_BuildValue("[lO]", (long)comp, compList);
将新数据放入其中。
但是,当我然后print
结果在Python中,我仍然有我开始的空列表。
是否需要执行一些额外的步骤来从C函数修改此python变量?我不能在return
中使用它,因为您已经看到我正在从中收集返回状态(此返回工作)。
编辑:从readCal一些代码,可能是有用的:
PyObject *result = NULL;
PyArg_ParseTuple(args, "sO", &filename, &result);
//Some creating of data is done, and then I am trying to set the list to that data:
result = Py_BuildValue("[lO]", (long)comp, compList);
你的意思是你想追加**这些值的Python列表?你不能在Python中替换**这样的变量,在C中也不可能。 –
并且请为'Cal_readFile'提供更多代码 –
@AnttiHaapala是的,我认为追加可能是正确的方法。该文件相当大,这就是为什么我不粘贴它。我会编辑一些可能相关的部分。 – ComputerLocus