如何在 C++ 中调用大型 python 脚本?

Posted

技术标签:

【中文标题】如何在 C++ 中调用大型 python 脚本?【英文标题】:How to call a large python script in C++? 【发布时间】:2016-06-07 17:26:55 【问题描述】:

我正在尝试利用两个不同脚本的各个方面并将它们用于单个 C++ 程序(使用 Ubuntu)。我遇到的问题是其中一个脚本是用 C++ 编写的,另一个是用 python 编写的。我一直在尝试使用 Python.h 库来完成此操作,但是(对于编程来说是相当新的),我找不到任何可以让我在 C++ 中打开 python 文件的资源。有人有什么建议吗?

例如,我想做如下的事情:

#include <python2.7/Python.h>
//include other stuff

int main (int argc, char *argv[])

    //open python script here 
    //use result from python script here

谢谢!

【问题讨论】:

查找 systempopen 系统调用。 man 2 systemman 2 popen 仅供参考,C++ 不被视为脚本,因为它是一种编译语言。此外,大型 Python 脚本的调用/启动方式与小型 Python 脚本相同。您收到的其他建议很好 - system() 如果您对收集 Python 脚本的输出不感兴趣,popen() 如果您愿意。 【参考方案1】:

您应该使用popen,它将子进程的标准输入/标准输出通过管道传输到返回的文件句柄。现在你能做的是

File* in = popen("python script_name.py", "r");

现在您可以使用此FILE* 来读取您的 Python 脚本的输出。

你可以使用fscanf(in, buffer_size, buffer)fgets(buffer, buffer_size, in) 从文件中读取。最后读取文件后不要忘记调用pclose(in)

【讨论】:

以上是关于如何在 C++ 中调用大型 python 脚本?的主要内容,如果未能解决你的问题,请参考以下文章

现在一些大型游戏,如传奇、魔兽世界等是用啥编程语言编出来的

在 QT Creator 中使用 C++ 调用 Python 脚本

如何从 z/OS 调用远程服务器上的 python 脚本?

混合编程:如何用pybind11调用C++

从 C++ 调用 Python

C/C++编程调用Python脚本集锦