本文目录导读:
我清楚如何使用Python的http.server模块快速搭建文件共享服务器,以下是最简单的方法:
快速启动(单行命令)
# Python 3.x python -m http.server 8000 # 指定端口(例如8080) python -m http.server 8080 # 绑定特定IP地址 python -m http.server 8000 --bind 0.0.0.0
基本用法说明
- 默认情况:共享当前目录下的所有文件
- 访问方式:在浏览器中输入
http://localhost:8000 - 局域网访问:使用电脑的IP地址,如
http://192.168.x.x:8000
自定义脚本示例
# file_server.py
import http.server
import socketserver
# 设置端口
PORT = 8000
# 创建处理器
Handler = http.server.SimpleHTTPRequestHandler
# 启动服务器
with socketserver.TCPServer(("", PORT), Handler) as httpd:
print(f"服务器运行在 http://localhost:{PORT}")
print("按 Ctrl+C 停止服务器")
httpd.serve_forever()
带指定目录的版本
import http.server
import socketserver
import os
# 指定要共享的目录
SHARED_DIR = "/path/to/shared/folder"
PORT = 8000
os.chdir(SHARED_DIR) # 切换到共享目录
Handler = http.server.SimpleHTTPRequestHandler
with socketserver.TCPServer(("", PORT), Handler) as httpd:
print(f"共享目录: {SHARED_DIR}")
print(f"访问地址: http://localhost:{PORT}")
httpd.serve_forever()
高级版本(带日志和目录显示)
import http.server
import socketserver
import os
import sys
class CustomHandler(http.server.SimpleHTTPRequestHandler):
def log_message(self, format, *args):
"""自定义日志输出"""
print(f"[{self.log_date_time_string()}] {args[0]} - {args[1]} {args[2]}")
def do_GET(self):
"""处理GET请求"""
# 默认的行为已经包含了目录列表和文件下载
super().do_GET()
def main():
# 配置参数
PORT = int(sys.argv[1]) if len(sys.argv) > 1 else 8000
DIRECTORY = sys.argv[2] if len(sys.argv) > 2 else "."
# 切换到指定目录
os.chdir(DIRECTORY)
# 启动服务器
with socketserver.TCPServer(("", PORT), CustomHandler) as httpd:
print(f"文件共享服务器已启动")
print(f"共享目录: {os.path.abspath(DIRECTORY)}")
print(f"访问地址: http://localhost:{PORT}")
print("按 Ctrl+C 停止服务器\n")
try:
httpd.serve_forever()
except KeyboardInterrupt:
print("\n服务器已停止")
httpd.server_close()
if __name__ == "__main__":
main()
安全注意事项
⚠️ 重要提醒:
- 默认情况下,任何人都可以访问和下载文件
- 不要在不安全的网络(如公共WiFi)上使用
- 使用完毕后及时关闭服务器(Ctrl+C)
- 建议在防火墙设置中限制访问IP范围
常用命令汇总
# 基本用法 python -m http.server # 指定IP和端口 python -m http.server 8000 --bind 0.0.0.0 # 后台运行(Linux/Mac) nohup python -m http.server 8000 & # Windows后台运行 start /B python -m http.server 8000
这个简单的服务器非常适合:
- 局域网内快速共享文件
- 临时文件传输
- 测试静态网页
- 快速原型开发
缺点是不支持断点续传、加密传输和用户认证,如果需要这些功能,建议使用更专业的文件共享方案。