【发布时间】:2016-06-14 21:27:17
【问题描述】:
我正在尝试构建一个 python GUI 应用程序,它需要运行 bash 脚本并捕获它们的输出。这些脚本中使用的大多数命令都需要在运行时进一步输入,因为它们处理网络和远程系统。
【问题讨论】:
-
所以你知道
subprocess。提示:subprocess.Popen
标签: linux bash python-3.x subprocess
我正在尝试构建一个 python GUI 应用程序,它需要运行 bash 脚本并捕获它们的输出。这些脚本中使用的大多数命令都需要在运行时进一步输入,因为它们处理网络和远程系统。
【问题讨论】:
subprocess。提示:subprocess.Popen
标签: linux bash python-3.x subprocess
Python 的subprocess 模块允许人们轻松运行外部程序,同时提供各种便利性和可定制性选项。
要运行不需要交互的简单程序,functionscall()、check_call() 和check_output()(省略参数)非常有用。
对于需要与正在运行的程序交互的更复杂的用例,可以使用Popen Objects,您可以在其中自定义输入/输出管道以及许多其他选项 - 上述函数是这些对象的包装器。您可以通过提供的方法poll()、wait()、communicate()等与正在运行的进程进行交互。
同样,如果communicate() 不适用于您的用例,您可以通过Popen.stdin、Popen.stdout 和Popen.stderr 获取PIPE 的文件描述符,并通过@987654324 直接与它们交互@。我更喜欢Polling Objects :)
【讨论】: