首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在单独的控制台窗口中启动应用程序(需要用户交互)

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

Stack Overflow用户
提问于 2019-12-03 08:03:42
回答 1查看 248关注 0票数 0

我知道有很多关于这个话题的问题,但似乎没有一个问题能解决我所有的需求。

我的需求

  • 启动另一个应用程序(应该支持各种应用程序:使用用户输入的长时间运行的进程、快速结束的简单应用程序或花费很长时间的应用程序)
  • 还应该能够启动立即结束(例如:'git状态‘)
  • --它需要在一个新的控制台窗口

<代码>H 111>控制台窗口中运行,即使在命令完成后也能看到应用程序的输出。H 212H 113它需要跨平台(Windows和Linux)H 214F 215

我想使用子处理模块。我已经尝试过使用选项CREATE_NEW_CONSOLE

代码语言:javascript
复制
subprocess.Popen(("git", "status"), close_fds=True, creationflags=subprocess.CREATE_NEW_CONSOLE | subprocess.STARTF_USESHOWWINDOW, shell=True)

但是:

,

  • ,它实际上不起作用。我看到没有窗口正在启动,或者可能正在启动,但在命令执行后退出得太快了。
  • --这只适用于Windows。想知道是否有一种方法可以在所有平台上始终如一地做到这一点?
EN

回答 1

Stack Overflow用户

发布于 2019-12-03 08:40:50

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

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

代码语言:javascript
复制
x-terminal-emulator -e "bash -c \"git status; exec bash\""

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

代码语言:javascript
复制
bash -c "git status; exec bash"

在那个窗户里。在Python中,这看起来就像

代码语言:javascript
复制
subprocess.Popen('x-terminal-emulator -e "bash -c \\"git status; exec bash\\""', shell=True)

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

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

代码语言:javascript
复制
subprocess.Popen('start cmd /k git status', shell=True)

会成功的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59152554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档