我想使用python打开cmd.exe,然后顺序向cmd.exe发送几个命令,并在同一个cmd.exe窗口中查看输出。我怎样才能做到这一点? 使用以下代码不会在cmd.exe窗口中显示输出。
proc = subprocess.Popen("cmd", creationflags=subprocess.CREATE_NEW_CONSOLE)
proc.communicate("dir\n")
答案 0 :(得分:1)
您需要指定stdin=subprocess.PIPE, stdout=subprocess.PIPE
。 (如果要捕获标准错误输出,还要指定stderr=subprocess.PIPE
)。否则,Popen.communicate
无法向子进程发送输入,也无法获得输出。
import subprocess
proc = subprocess.Popen("cmd", stdin=subprocess.PIPE, stdout=subprocess.PIPE, creationflags=subprocess.CREATE_NEW_CONSOLE)
out, err = proc.communicate("dir\n" "cd ..\n" "dir\n")
# `Popen.communicate` returns a tuple of (standard output, standard error)
print(out)