使用命令行参数在C ++中运行python .py文件

时间:2018-05-25 09:35:10

标签: python c++ python-3.x

我一直在网站上寻找类似的答案,而我设法找到的最接近的是this one。答案给出了以下C程序来实现这一目标:

//My code file
#include <stdio.h>
#include <Python.h>

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;
}

我想做类似的事情(使用python 3 ,我不知道这是否有所不同)并使用matplotlib生成输出。但是,我不知道如何使其适应C ++程序,特别是考虑到函数所需的类型(例如wchar_t** argv)。有没有办法在不必对C类型执行各种类型转换的情况下执行此操作?

1 个答案:

答案 0 :(得分:-2)

我不确定Python.h能为您提供什么,但如果您只想运行cmd命令,则可以执行此操作:

char* filename = "mypy.py";
char* arg = "-m";
char* argVal = "/tmp/targets.list";

char temp[512];

sprintf(temp, "python3 %s %s %s", filename, arg, argVal); 

int errCode = system((char *)temp);

if (errCode){
    std::cout << "Error code returned: " << errCode << std::endl;
    return 1;
}