【问题标题】:Running a python .py file in C++ with command line arguments使用命令行参数在 C++ 中运行 python .py 文件
【发布时间】:2018-11-04 15:58:04
【问题描述】:

我一直在寻找类似的答案,我设法找到最接近的答案是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 类型执行各种类型转换?

【问题讨论】:

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


    【解决方案1】:

    我不确定 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;
    }
    

    【讨论】:

      猜你喜欢
      • 2021-12-21
      • 1970-01-01
      • 1970-01-01
      • 2014-06-23
      • 1970-01-01
      • 2019-09-27
      • 2012-04-01
      相关资源
      最近更新 更多