【发布时间】:2018-04-30 20:43:57
【问题描述】:
我正在编写一个脚本来打开一个新的命令提示符并运行一个可执行文件。我得到了一个使用os.system 的工作代码。你能帮我把它改成subprocess.Popen吗?
hello_exe = r'c:\hello.exe'
os.system("start cmd /k {}".format(hello_exe))
我无法将hello_exe 作为后台进程运行,因为我希望用户看到命令提示符并能够滚动浏览日志。任何帮助表示赞赏。谢谢。
我的环境:Windows8 和 python 2.7.12
【问题讨论】:
-
使用
subprocess.call('cmd.exe /k "{}"'.format(hello_exe), creationflags=subprocess.CREATE_NEW_CONSOLE)。cmd.exe /k这里的唯一目的是在 hello.exe 退出后留下一个附加到控制台的进程。否则它不是必需的,并且与分配新控制台无关。如果在 hello.exe 退出后控制台可以关闭,请忽略它。 -
感谢您的回答。但是,我不能直接使用它,因为 hello_exe 是一个无限期运行的程序(只有在被用户关闭或被我的 python 脚本终止时才会终止)。而且我不希望 subprocess.call() 阻止我的脚本。我将 .call 更改为 .Popen,它完成了我想要的工作。非常感谢,您的 creationflags 发挥了我在文档中找不到的魔力
标签: python-2.7 cmd subprocess os.system