【发布时间】:2016-11-09 16:07:25
【问题描述】:
如果我运行 Hello.pyw
import os
os.system('start hello.exe')
我得到一个非常弹出的 cmd。 如何在没有 cmd 弹出窗口的情况下运行此脚本。
【问题讨论】:
标签: windows python-3.x
如果我运行 Hello.pyw
import os
os.system('start hello.exe')
我得到一个非常弹出的 cmd。 如何在没有 cmd 弹出窗口的情况下运行此脚本。
【问题讨论】:
标签: windows python-3.x
从你的命令中丢失start。
根据start MSDN page or start /?:
启动一个单独的窗口来运行指定的程序或命令。
os.system('hello.exe')
或者如果您需要运行 bat/cmd 文件而不是 hello.exe,请使用 cmd /c(cmd /? 用于完整的 cmd 选项):
os.system('cmd /c "hello.bat"')
【讨论】:
cmd /c 与os.system 一起使用是没有意义的。运行cmd.exe /c cmd /c "hello.bat"。此外,从 pythonw.exe(即 .pyw 脚本)运行时,此答案中的两个命令仍会创建一个临时控制台窗口。 os.system 使用 cmd shell,它是一个控制台程序,所以 Windows 会自动创建一个控制台。如果目标(例如 hello.exe)也是一个控制台程序,则使用 start 实际上会创建两个控制台窗口。相反,使用 subprocess 隐藏控制台或阻止它被创建,就像我 show here.