在 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 方法中,我们可以向子进程的标准输入写入数据,并读取子进程的标准输出和标准错误。
<