好像您正在使用Python.h中的python开发API寻找答案。这是您应该工作的一个例子:
#My python script called mypy.py
import sys
if len(sys.argv) != 2:
sys.exit("Not enough args")
ca_one = str(sys.argv[1])
ca_two = str(sys.argv[2])
print "My command line args are " + ca_one + " and " + ca_two
然后C代码通过这些参数:
//My code file
#include
#include
void main()
{
FILE* file;
int argc;
char * argv[3];
argc = 3;
argv[0] = "mypy.py";
argv[1] = "-m";
argv[2] = "/tmp/targets.list";
Py_SetProgramName(argv[0]);
Py_Initialize();
PySys_SetArgv(argc, argv);
file = fopen("mypy.py","r");
PyRun_SimpleFile(file, "mypy.py");
Py_Finalize();
return;
}
如果您可以将参数传递到C函数中,这个任务变得更加容易:
void main(int argc, char *argv[])
{
FILE* file;
Py_SetProgramName(argv[0]);
Py_Initialize();
PySys_SetArgv(argc, argv);
file = fopen("mypy.py","r");
PyRun_SimpleFile(file, "mypy.py");
Py_Finalize();
return;
}
你可以直接通过。现在我的解决方案只是为了时间而使用2个命令行参数,但是你可以对所有需要传递的所有6使用相同的概念,当然也可以使用更清晰的方法来捕获python端的args,但是这只是基本的想法。
希望有帮助!