首页 > 解决方案 > 在单独的控制台窗口中启动应用程序(需要用户交互)

问题描述

我知道关于这个主题有很多问题,但似乎没有一个问题能提供解决我所有要求的答案。

我的要求

我想使用子流程模块。我已经尝试使用选项 CREATE_NEW_CONSOLE

subprocess.Popen(("git", "status"), close_fds=True, creationflags=subprocess.CREATE_NEW_CONSOLE | subprocess.STARTF_USESHOWWINDOW, shell=True)

但:

标签: pythonsubprocesspopen

解决方案


一种方法是使用子进程打开一个新的控制台窗口并在该窗口中运行命令。在 Linux 上,可以使用“-e”标志后跟命令来实现。

例如(基于https://stackoverflow.com/a/3531426

x-terminal-emulator -e "bash -c \"git status; exec bash\""

将打开默认终端的新窗口并运行命令

bash -c "git status; exec bash"

在那个窗口。在 Python 中,这看起来像

subprocess.Popen('x-terminal-emulator -e "bash -c \\"git status; exec bash\\""', shell=True)

最后运行“exec bash”会在控制台窗口中打开一个新的 shell 并阻止它立即退出。


根据这个答案,在 Windows 上,您可以使用“start cmd /k”然后运行该命令。我没试过,但大概是这样的

subprocess.Popen('start cmd /k git status', shell=True)

会成功的。


推荐阅读