使用Python从swig生成的函数读取控制台输出

2024-05-19 03:21:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Python来绘制C++代码中生成的数据。在C++代码中,我使用数组生成和存储数据,并将数据输出到控制台。在

因此,编译c++代码的输出是:

0 1.38889 1.38889 1.38889 1.38889 100
0 2.08333 2.77778 2.77778 52.0833 100

…20多个迭代

现在,在Python方面,我可以使用我的函数,它将数据输出到控制台,但实际上我不能将数据存储在列表或其他东西中

下面是我的python代码:

import heat

heat.heat()

print heat.heat()

type(heat.heat())

输出:

0 1.38889 1.38889 1.38889 1.38889 100

0 2.08333 2.77778 2.77778 52.0833 100

...

0 24.7484 46.755 67.0274 84.5801 100

0 24.7664 47.2768 67.0564 84.9026 100

48

type 'int'

我是Sug新手,所以我的命名约定很糟糕,但是在我的C++代码中,我只需要一个函数来导入,所以这就是为什么。我的{{CD1}}函数使用雅可比迭代来解决热传导问题,其中的值已经在C++文件中被硬编码了。基本上,我只想将数据绘制成图形,但是我的heat.heat()函数只输出到屏幕。在


Tags: 数据函数代码import列表type绘制数组
1条回答
网友
1楼 · 发布于 2024-05-19 03:21:25

我建议使用subprocess.check_output() function。此函数允许您执行任意命令/程序,并在Python中将其输出捕获为字符串。示例:

import subprocess

output = subprocess.check_output("command to execute", shell=True)

变量“output”现在包含命令的输出,您可以使用任何常用的string methods来解析它。根据您的用例,您可能需要也可能不需要shell=True参数。主要区别在于该命令是在默认的shell环境中执行还是仅仅作为子进程执行。这些文档有更详细的信息和一些您应该阅读的警告。(如果“要执行的命令”可能来自不受信任的源,请不要将其设置为true!)在

使用此选项无法捕获本机python函数的输出,因此有两个选项:

    >P>因为您试图从编译的C++可执行文件捕获输出,所以您可以将它作为“执行命令”执行。

  1. 如果您的heat()函数不仅仅是调用可执行文件,那么您可以在启动现有脚本的包装器脚本中使用subprocess.check_output(),并将所有输出处理转移到脚本中。

相关问题 更多 >

    热门问题