我可以从python运行交互式bash脚本吗?

时间:2016-06-14 21:27:17

标签: linux bash python-3.x subprocess

我正在尝试构建一个需要运行bash脚本并捕获其输出的python GUI应用程序。这些脚本中使用的大多数命令在运行时需要进一步输入,因为它们处理网络和远程系统。

1 个答案:

答案 0 :(得分:0)

Python的subprocess模块允许用户轻松运行外部程序,同时提供各种方便和可定制的选项。

要运行不需要互动的简单程序,functions call()check_call()check_output()(省略参数)非常有用。

对于需要与正在运行的程序交互的更复杂的用例,可以使用Popen Objects,您可以在其中自定义输入/输出管道以及许多其他选项 - 前面提到的函数是这些函数的包装器对象。您可以通过提供的方法poll()wait()communicate()等与正在运行的流程进行互动。

同样,如果communicate()对您的用例不起作用,您可以通过Popen.stdinPopen.stdout和{{1}获取PIPE的文件描述符},并使用select直接与他们互动。我更喜欢Polling Objects:)