欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

python 执行 下面的代码会出现黑窗口,,如何使黑窗口隐藏 或者直接关闭 AG chatgpt 有大用 有大大用

python 执行 上面的代码会出现黑窗口,,如何使黑窗口隐藏 或者直接关闭

result = subprocess.run(

            ["netsh", "advfirewall", "show", "allprofiles", "state"],

            capture_output=True, text=True, encoding="cp936"  # <<< 修改此处

            # encoding="cp936" # 如果 utf-8 乱码,可以尝试这个

        )


我自己亲自做的      creationflags=subprocess.CREATE_NO_WINDOW  # 关键参数        #   OK  有大用  

import subprocess

result = subprocess.run(
    ["netsh", "advfirewall", "show", "allprofiles", "state"],
    capture_output=True,
    text=True,
    encoding="cp936",
    creationflags=subprocess.CREATE_NO_WINDOW  # 关键参数
)
output = result.stdout
print("--- netsh output ---") # 打印原始输出以供调试
print(output)
print("--------------------")





在 Python 中使用 subprocess.run() 执行命令时出现黑色控制台窗口(特别是在 Windows 上),可以通过以下方法隐藏:

解决方案

  1. 对于 Windows 系统:使用 CREATE_NO_WINDOW 标志

python
import subprocess result = subprocess.run(    ["netsh", "advfirewall", "show", "allprofiles", "state"],    capture_output=True,    text=True,    encoding="cp936",    creationflags=subprocess.CREATE_NO_WINDOW  # 关键参数 )
  1. 跨平台解决方案(但 Windows 效果更好的是上述方法):

python
result = subprocess.run(    ["netsh", "advfirewall", "show", "allprofiles", "state"],    stdout=subprocess.PIPE,    stderr=subprocess.PIPE,    text=True,    encoding="cp936",    startupinfo=subprocess.STARTUPINFO(        dwFlags=subprocess.STARTF_USESHOWWINDOW,        wShowWindow=subprocess.SW_HIDE    ) if hasattr(subprocess, 'STARTUPINFO') else None )

补充说明

  • 第一种方法 (CREATE_NO_WINDOW) 是 Windows 专有但最可靠的方法

  • 如果用 PyInstaller 打包成 exe 后仍有窗口出现,需要在 spec 文件中设置 console=False

  • 这些方法同样适用于其他命令行工具的调用场景

选择第一种方法即可完美解决你的需求。


普通分类: