Uncategorized · 11 11 月, 2023 0

Python与C的交互:如何在Python中调用并获取C程序的返回值和输出

有这么一个例子。咱用C写了一个程序:

// calculator.c
#include <stdio.h>
#include <stdlib.h>

int main (int argc,char *argv[]) {
    int i_argv0 = atoi(argv[1]);
    printf("The program will return: %d * 2", i_argv0);
    return i_argv0 * 2;
}

编译后命名为calculator,功能就是把传进去的参数(整数)乘2并返回。
如果需要在Python里调用这个程序的功能,需要这么写:

# call.py
import subprocess
result = subprocess.run(["./calculator", "6"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
print(result.returncode)

第3行相当于执行./calculator 6,即让被调用程序计算6*2的值。用result.returncode即可获得返回值12。

如果想要得到被调用程序的输出文本,则加入

print(result.stdout.decode("utf-8"))

此例中,执行该命令将输出以下字符串。

The program will return: 6 * 2