【问题标题】:Executing a program from python so that it opens in separate cmd.exe window从 python 执行程序,使其在单独的 cmd.exe 窗口中打开
【发布时间】:2013-12-26 13:27:22
【问题描述】:

如何从 python 程序中执行程序,以便它在单独的 cmd.exe 窗口中打开,并显示已执行程序的输出? 我尝试使用 subprocess.popen,但在程序运行时它不显示 cmd.exe 窗口。

【问题讨论】:

    标签: python cmd subprocess


    【解决方案1】:

    在 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)
    

    【讨论】:

    • 我试过导入子进程,os cd=os.getcwd() p = subprocess.Popen([cd+"\\"+'cmd.exe',cd+"\\"+'program.bat '], shell=True) 但它没有在 cmd.exe 窗口中打开。
    • 尝试在可执行文件之前添加 start
    • 使用start 的问题在于它会产生一个新进程并且不等待它完成。即,返回的 Popen 对象的 wait() 方法立即返回,并且没有直接的方法可以知道进程何时结束。如果您想在新控制台中启动进程并且仍然能够正确等待进程完成,请正常使用 Popen(无 'start'、'cmd'、shell=True),但只需传递额外的 creationflags=subprocess.CREATE_NEW_CONSOLE 参数)。详情:stackoverflow.com/a/20612529/23715
    猜你喜欢
    • 2014-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-01
    • 2017-04-20
    • 2010-10-27
    • 2019-05-16
    • 1970-01-01
    相关资源
    最近更新 更多