使用Python运行http.server搭建本地文件服务时如何隐藏控制台窗口
问题原因
你修改为.pyw后缀不生效的核心原因是:.pyw文件只会让当前运行脚本的父进程使用无窗口的pythonw.exe启动,但你脚本内通过os.system调用的是带控制台窗口的python.exe,子进程仍然会单独弹出控制台窗口。
解决方法
- 方法1:改用
subprocess模块启动子进程,添加无窗口启动标志(推荐)
将你的代码替换为如下内容,再保存为.pyw后缀运行即可:
import subprocess import getpass import os command = [ "python", "-m", "http.server", "--directory", os.path.join("C:/Users", getpass.getuser()) ] subprocess.Popen(command, creationflags=subprocess.CREATE_NO_WINDOW)
该方法通过CREATE_NO_WINDOW标志强制子进程不创建控制台窗口,启动后不会有任何界面弹出。
- 方法2:直接调用无窗口的
pythonw.exe启动服务
将你原有代码里的调用命令修改为pythonw开头即可,修改后代码如下,同样保存为.pyw运行:
import os import getpass os.system('pythonw -m http.server --directory C:/Users/'+getpass.getuser())
注意事项
- 服务启动后没有控制台窗口,无法通过
Ctrl+C停止,需要停止时打开任务管理器,找到对应pythonw进程手动结束即可。 - 如果需要自定义端口,直接在命令末尾添加端口号即可,比如要使用8000端口,命令改为
python -m http.server 8000 --directory xxx。
内容的提问来源于stack exchange,提问作者Lun4rIum
相关产品推荐
相关产品推荐

