在单独的控制台窗口中启动应用程序(需要用户交互)

问题描述 投票:0回答:1

我知道这个主题上有很多问题,但似乎没有一个答案可以解决我的所有要求。

我的要求

  • 启动另一个应用程序(应该支持所有类型的应用程序:使用用户输入的长时间运行的进程,快速结束的简单应用程序或需要很长时间的应用程序]
  • 还应该能够启动立即结束的应用程序(例如:'git status')
  • 需要在新的控制台窗口中启动
  • 即使在命令完成后,控制台窗口也应保持活动状态,以查看应用程序输出。
  • 需要跨平台(Windows和Linux)

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

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

但是:

  • 确实不起作用。我没有看到任何窗口正在启动,或者可能是正在启动但在执行命令后退出得太快。
  • 仅适用于Windows。想知道是否有一种方法可以在所有平台上保持一致吗?
python subprocess popen
1个回答
0
投票
例如(基于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,并防止其立即退出。

根据this answer,在Windows上,您可以使用“ start cmd / k”,然后运行命令。我没有尝试过,但大概是


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

将解决问题。

© www.soinside.com 2019 - 2024. All rights reserved.