如何在含index.html的Python本地http.server中查看目录列表?
当然有办法!下面给你两种实用方案,按需选择就行:
方案1:自定义HTTP服务器脚本(最可靠)
默认的python -m http.server用的SimpleHTTPRequestHandler会优先找index.html并返回它。我们可以写个简单的自定义脚本,修改这个行为,让服务器不管有没有index.html,都直接显示目录列表。
步骤很简单:
- 在项目根目录新建一个
custom_server.py文件,把下面的代码粘进去:
from http.server import SimpleHTTPRequestHandler, HTTPServer class DirectoryOnlyHandler(SimpleHTTPRequestHandler): # 清空默认的索引文件列表,这样就不会自动加载index.html了 directory_index = [] if __name__ == "__main__": PORT = 8000 server = HTTPServer(("", PORT), DirectoryOnlyHandler) print(f"服务器运行在 http://localhost:{PORT}") try: server.serve_forever() except KeyboardInterrupt: print("\n服务器已停止。") server.server_close()
- 用这个脚本替代默认命令启动服务器:
python custom_server.py
现在访问http://localhost:8000,就直接显示目录列表了。要是想看index.html的内容,直接访问http://localhost:8000/index.html就行。
方案2:URL路径技巧(临时快速用)
如果不想写脚本,也可以试试修改浏览器地址栏的URL来绕过index.html的自动加载:
- 正常访问
http://localhost:8000会加载index.html,但你可以输入http://localhost:8000/%2E%2E/(这是../的URL编码) - 或者直接输入
http://localhost:8000/./(末尾加个./)
不过要注意,这个方法的有效性可能和Python版本有关,有些新版本可能已经修复了这个绕过方式,所以方案1是更稳定的选择。
内容的提问来源于stack exchange,提问作者Kundan
相关产品推荐
相关产品推荐

