📜  实时输出子进程 - Python (1)

📅  最后修改于: 2023-12-03 15:25:09.526000             🧑  作者: Mango

实时输出子进程 - Python

使用subprocess模块中的Popen函数可以在Python中运行子进程,同时可以实时输出子进程的结果。

以下是一个示例代码,该示例代码启动一个bash shell,并输出其中的命令输出结果。

import subprocess

cmd = ['bash', '-c', 'echo "Hello world"; ls']
process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

while True:
    output = process.stdout.readline().decode().strip()
    if output == '' and process.poll() is not None:
        break
    if output:
        print(output)
    
    error = process.stderr.readline().decode().strip()
    if error == '' and process.poll() is not None:
        break
    if error:
        print(error)

rc = process.poll()

在上述代码中,我们使用subprocess.Popen函数启动一个bash shell,并将输出重定向到Python中的管道。在while循环中,我们使用process.stdout.readline()process.stderr.readline()函数按行读取管道,以获得子进程的实时输出结果。

最后,我们使用process.poll()来检查子进程的状态,并获取其退出代码。

以上是关于Python实时输出子进程的介绍,希望能帮助到您。