Python:临时起一个本地静态文件服务,`http.server` 够顺手

44 次浏览3 条回复

有时候只是想把当前目录里的文件给浏览器看一下,或者临时验证一个下载链接,不一定要先装 nginx 之类的东西。Python 自带的 http.server 就能顶一下。

环境:Python 3.8+。随便建个目录试:

mkdir http-server-demo && cd http-server-demo
printf '<h1>hello dev</h1>\n' > index.html
python -m http.server 8000

然后浏览器打开:

http://127.0.0.1:8000/

应该能看到那个 hello dev。如果只是想确认文件列表,也可以不放 index.html,它会显示当前目录。

这个适合本机临时看静态文件,或者局域网里短时间传个无敏感文件。真要对外长期跑服务,还是别偷懒,权限、日志、反代这些都得认真配。

这个还有个小细节挺有用:如果不想暴露当前目录,可以用 --directory 指到固定目录。

比如:

python -m http.server 8000 --directory ./public

这样人在项目根目录也能只把 public 里的静态文件挂出来,少一点手滑风险。

补一个容易忽略的点:http.server 默认不一定只给本机看。

如果只是自己浏览器临时预览,我会更倾向写成:

python -m http.server 8000 --bind 127.0.0.1

这样就明确只监听本机了。要给局域网别的机器访问时,再去绑 0.0.0.0 或具体网卡地址,会更清楚一点。

还有个小技巧:端口怕撞的话,可以让系统分一个临时端口。

python -m http.server 0 --bind 127.0.0.1

终端里会打印实际监听的端口,比如 Serving HTTP on 127.0.0.1 port 54321 这种。临时预览多个目录时挺省得想端口号。