【发布时间】:2021-12-16 19:34:55
【问题描述】:
我想使用 subprocess.Popen 或任何替代方法来生成一个新的终端窗口并继续向它提供命令,其输出显示在同一终端窗口中。 到目前为止我已经尝试过
import subprocess
i=subprocess.Popen("start cmd /K tree",creationflags=subprocess.CREATE_NEW_CONSOLE,stdin=subprocess.PIPE,stdout=subprocess.PIPE,shell=True)
i.stdin.write(b"echo hi\n")
out=i.stdout.read()
print(out)
【问题讨论】:
-
这只是 CMD 和大多数其他 shell 的正常行为。如果您提供要运行的命令,他们将运行它并退出。如果您在终端窗口中键入该命令也会发生同样的情况,它会创建一个新的 cmd 进程,运行给定的命令并退出。所以这不是 python 问题,而是您使用 cmd 的问题。
-
也许您应该使用
pexpect启动cmd而不使用任何命令,然后发送tree之类的命令。或者也许你应该使用 subprocess 仅启动cmd并使用stdint发送tree和其他命令。
标签: python windows subprocess