【发布时间】:2013-12-26 13:27:22
【问题描述】:
如何从 python 程序中执行程序,以便它在单独的 cmd.exe 窗口中打开,并显示已执行程序的输出? 我尝试使用 subprocess.popen,但在程序运行时它不显示 cmd.exe 窗口。
【问题讨论】:
标签: python cmd subprocess
如何从 python 程序中执行程序,以便它在单独的 cmd.exe 窗口中打开,并显示已执行程序的输出? 我尝试使用 subprocess.popen,但在程序运行时它不显示 cmd.exe 窗口。
【问题讨论】:
标签: python cmd subprocess
在 Windows 中,您需要声明可选变量 shell=True 并使用 start:
subprocess.Popen('start executable.exe', shell=True)
或者如果您想在运行可执行文件后终止 shell:
subprocess.Popen('start cmd /C executable.exe', shell=True)
例如:
subprocess.Popen('start dir', shell=True)
subprocess.Popen('start cmd /C dir', shell=True)
【讨论】:
start 的问题在于它会产生一个新进程并且不等待它完成。即,返回的 Popen 对象的 wait() 方法立即返回,并且没有直接的方法可以知道进程何时结束。如果您想在新控制台中启动进程并且仍然能够正确等待进程完成,请正常使用 Popen(无 'start'、'cmd'、shell=True),但只需传递额外的 creationflags=subprocess.CREATE_NEW_CONSOLE 参数)。详情:stackoverflow.com/a/20612529/23715