我正在尝试构建一个需要运行bash脚本并捕获其输出的python GUI应用程序。这些脚本中使用的大多数命令在运行时需要进一步输入,因为它们处理网络和远程系统。
答案 0 :(得分:0)
Python的subprocess模块允许用户轻松运行外部程序,同时提供各种方便和可定制的选项。
要运行不需要互动的简单程序,functions call()
,check_call()
和check_output()
(省略参数)非常有用。
对于需要与正在运行的程序交互的更复杂的用例,可以使用Popen Objects,您可以在其中自定义输入/输出管道以及许多其他选项 - 前面提到的函数是这些函数的包装器对象。您可以通过提供的方法poll()
,wait()
,communicate()
等与正在运行的流程进行互动。
同样,如果communicate()
对您的用例不起作用,您可以通过Popen.stdin
,Popen.stdout
和{{1}获取PIPE的文件描述符},并使用select直接与他们互动。我更喜欢Polling Objects:)