You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C++程序中调用执行Python脚本并输出运行结果?

实现方案

方法1:直接调用system函数(最简实现,直接输出到终端)

该方案和你之前用Python的os.system调用C可执行文件的逻辑完全对应,C示例代码如下:

#include <cstdlib>

int main() {
    // 命令可按需调整:Linux/macOS环境通常用python3,Windows环境通常用python
    // 如果需要sudo权限执行,可改为 "sudo python3 ppy.py"
    system("python3 ppy.py");
    return 0;
}

编译运行上述C++程序即可直接调用Python解释器执行ppy.py,在终端输出Hello World!。

方法2:通过popen捕获脚本输出(可在C++侧处理输出内容)

如果你需要在C++程序中获取到Python脚本的输出做后续逻辑处理,而非直接打印到终端,可以用管道读取的方式实现:

#include <iostream>
#include <cstdio>
#include <array>
#include <string>

int main() {
    const char* cmd = "python3 ppy.py";
    // 只读模式打开命令执行管道
    FILE* pipe = popen(cmd, "r");
    if (!pipe) {
        std::cerr << "命令执行失败,无法打开管道" << std::endl;
        return 1;
    }

    std::array<char, 128> buffer;
    std::string py_output;
    // 循环读取管道中的输出内容
    while (fgets(buffer.data(), buffer.size(), pipe) != nullptr) {
        py_output += buffer.data();
    }

    pclose(pipe);

    // 此处可对输出内容做自定义处理,示例直接打印
    std::cout << "捕获到的Python脚本输出:\n" << py_output << std::endl;
    return 0;
}

注意事项

  • 请确保Python解释器已添加到系统PATH环境变量,也可以直接写Python解释器的绝对路径(如/usr/bin/python3 ppy.py)避免找不到解释器的问题
  • 如果ppy.py不在C++程序的运行工作目录下,请填写脚本的绝对路径(如python3 /home/xxx/code/ppy.py)
  • 如果需要和Python脚本做更复杂的双向交互、直接调用Python函数等,可考虑将Python解释器嵌入C++程序,基础场景上述两种方案足够使用

额外提醒:你之前提供的C++示例代码存在笔误,std:endl少了一个冒号,正确写法为std::endl。

内容的提问来源于stack exchange,提问作者임성래

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 07:15:01