我有一个独立的Python模块,用于对一些原始数据进行分析。该模块运作良好。
现在我需要C源代码中Python模块生成的输出,它将对输出进行进一步处理。
以下是流程的粗略概念:
那么从C源代码中获取Python模块结果的最佳方法是什么?
我应该使用以下内容来填充结果吗?
from ctypes import *
class result(Structure):
_fields_ = [("status", c_int), ...]
答案 0 :(得分:3)
我认为你不想使用ctypes模块 - 该模块用于从 Python代码访问DLL和共享对象,而不是相反。
您没有指定C程序如何调用Python模块。它会
吗?使用来自C的popen
之类的东西来调用Python脚本?如果是这样,那么您可以在Python中将数据写入stdout
并在C中正确解释数据。您必须为此设计自己的小协议。这可以是ad-hoc协议,或者你可以使用像JSON这样的现有格式,你可以为它找到C和Python的库。
embed the Python VM in your C program?然后,您需要将C值转换为适当的Py*
值并将它们放入PyTuple
中,您可以将其作为参数传递给Python函数来自C. Python函数的输出将是PyObject
,您必须解压缩(在C中)才能获取数据。
在这两种情况下,您都需要自己打包并打开包装。