如何在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,提问作者임성래
相关产品推荐
相关产品推荐

