Python应用调用subprocess.run弹出临时控制台,如何避免?
解决Python调用subprocess.run时弹出控制台的问题
在Windows环境下运行这段代码时,弹出临时控制台是因为默认调用控制台程序(比如java.exe)会创建新的控制台窗口,你可以通过以下方法解决:
方法1:使用CREATE_NO_WINDOW标记(Python 3.7+)
直接给subprocess.run添加creationflags参数,指定不创建窗口:
import subprocess subprocess.run( ['java', '-jar', 'myprogram.jar', testFile], capture_output=True, creationflags=subprocess.CREATE_NO_WINDOW )
方法2:兼容Python 3.6及以下版本
如果你的Python版本较低,可以通过配置startupinfo来隐藏窗口:
import subprocess import sys startupinfo = None if sys.platform == 'win32': startupinfo = subprocess.STARTUPINFO() startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW startupinfo.wShowWindow = subprocess.SW_HIDE subprocess.run( ['java', '-jar', 'myprogram.jar', testFile], capture_output=True, startupinfo=startupinfo )
如果是在Linux或macOS上运行,默认不会弹出额外的控制台窗口,只要直接调用java二进制文件即可,无需额外参数。
内容的提问来源于stack exchange,提问作者Angela
相关产品推荐
相关产品推荐

