python 的 subprocess 如何像 shell 一样,和终端可以多次交互操作?

在 Python 中,我们可以使用 subprocess 模块来执行系统命令,并获取命令的输出结果。但是默认情况下,subprocess 只能执行一次命令,并返回命令的输出结果,无法实现和终端一样的多次交互操作。

那么,如何解决这个问题呢?其实很简单,我们只需要使用 subprocess 模块中的 Popen 方法来创建一个子进程,并使用 communicate 方法来和子进程进行交互。

下面是一个示例代码,供大家参考:

import subprocess
while True:
    cmd = input("$ ")
    if cmd == "exit":
        break
    p = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE,
                         stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    output, errors = p.communicate()
    print(output.decode("utf-8"))
    print(errors.decode("utf-8"))

在上面的代码中,我们通过创建一个 while 循环来不断接收用户输入的命令。当用户输入 exit 命令时,程序退出循环。

在循环中,我们使用 subprocess.Popen 方法创建一个子进程,并使用 communicate 方法与子进程进行交互。在 communicate 方法中,我们可以向子进程的标准输入写入数据,并读取子进程的标准输出和标准错误。

<

猜你喜欢

转载自blog.csdn.net/weixin_38612163/article/details/129952669