如果我将代码文件另存为.pyw
,没有出现控制台窗口 - 这就是我想要的 - 但如果代码包含对os.system
,我仍然看到一个讨厌的控制台窗口。我认为这是由调用引起的os.system
。有没有办法从我的内部执行其他文件.pyw
脚本根本不升起控制台窗口?
你应该使用subprocess.Popen http://docs.python.org/library/subprocess.html#popen-constructor类传递为startupinfo
参数的值实例subprocess.STARTUPINFO http://docs.python.org/library/subprocess.html#subprocess.STARTUPINFO与 一起上课dwFlags
属性持有subprocess.STARTF_USESHOWWINDOW http://docs.python.org/library/subprocess.html#constants旗帜和wShowWindow
属性持有subprocess.SW_HIDE http://docs.python.org/library/subprocess.html#constants旗帜。这可以从阅读行中推断出来866-868 http://hg.python.org/cpython/file/70274d53c1dd/Lib/subprocess.py#l866 of subprocess.py
源代码。可能还需要通过subprocess.CREATE_NEW_CONSOLE http://docs.python.org/library/subprocess.html#constants标志值为creationflags http://docs.python.org/library/subprocess.html#popen-constructor运行时的参数pythonw.exe
它不会打开控制台。
当你使用shell=True
只是碰巧以上所有设置都正确,但这并不意味着它是正确的解决方案。我认为这并不是因为它增加了运行命令解释器和解析参数的开销。此外,您应该记住(...) shell=True 的使用是强烈劝阻如果命令字符串是从外部输入构造的根据子流程模块的文档。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)