欢迎访问宙启技术站
智能推送

通过Python的popen2库实现从外部命令中获取实时输出。

发布时间:2024-01-07 22:22:53

通过Python的popen2库可以实现从外部命令中获取实时输出。popen2库提供了一个名为popen2()的函数,该函数接受一个命令作为参数,并返回一个包含了进程的输入和输出流的元组。我们可以使用该函数来执行外部命令,并获取其实时输出。

下面是一个使用popen2库获取实时输出的示例:

import os
import sys

def execute_command(command):
    # 执行命令并获取输入、输出流
    input_stream, output_stream = os.popen2(command)

    while True:
        # 读取输出流中的一行
        line = output_stream.readline()
        if not line:
            break

        # 处理输出行
        print(line.strip())
        sys.stdout.flush()

    # 关闭输入、输出流
    input_stream.close()
    output_stream.close()

# 执行一个命令,并实时输出其结果
execute_command('ls -la')

在上面的例子中,我们定义了一个execute_command()函数来执行外部命令,并且获取实时输出。在函数内部,我们使用os.popen2()方法执行命令,并返回输入、输出流。然后我们使用一个无限循环来读取输出流中的每一行,直到没有行可以读取为止。在读取每一行后,我们对其进行处理(例如,打印到控制台),并使用sys.stdout.flush()方法将输出刷新到控制台。最后,我们关闭输入和输出流,以释放资源。

在本例中,我们执行了ls -la命令,并实时输出其结果。你可以使用适当的命令来替换它,以执行你想要的外部命令。

总结起来,通过Python的popen2库,我们可以方便地执行外部命令,并获取其实时输出。这对于需要和外部命令进行交互或实时处理命令输出的情况非常有用。