使用内置的 http.server
模块,来搭建微型服务器。
快速启动服务器http.server --- HTTP 服务器Python 3.13.0 文档
声明:文章代码部分 由 ai 生成
创建一个简单的文件共享服务器 进入 需要共享的目录 再打开cmd 输入以下代码
python -m http.server 8000
打开服务器
设置主页 index.html
打开网页验证
局域网的话这里要把英文改为 电脑ip地址 手机浏览器 才可以 访问!
关闭服务器只需要再当前cmd 界面Ctrl + C 按动即可关闭
收到键盘中断,正在退出。 有可能失效,直接关闭当前cmd 窗口最直接!
查看所有端口占用情况:这里太多了不推荐用
在命令提示符窗口中,输入以下命令并按
Enter
键: netstat -ano
查找特定端口的占用情况:
假设你想查找端口
8080
的占用情况,可以输入以下命令:netstat -ano | findstr :8080
列出所有 Python 进程:
输入以下命令并按
Enter
键:tasklist | findstr python
结束所有 Python 进程:
输入以下命令并按
Enter
键:taskkill /IM python.exe /F
结束进程:PID 为
51276
的进程输入以下命令并按
Enter
键:taskkill /PID 51276 /F
-m
选项用于将某个模块作为脚本运行。
具体来说,
-m
告诉 Python 解释器在标准库或第三方模块库中查找指定的模块,并执行该模块中的代码。
为了简化操作我们写一个 简易脚本
- 在编程语言中,REM常用于表示注释,特别是在BASIC语言中。
创建一个记事本 文件 填入以下代码
@echo off
REM 关闭命令回显,使输出更干净
python -m http.server 8000
REM 启动命令提示符
start cmd
保存之后更改后缀名 为.bat
双击执行 打开服务器!
进阶功能,自定义文件上传处理,启动服务器并接受手机上传上来的文件!
这里直接放代码了,一共是三个文件
open.bat //快捷cmd
@echo off
REM 关闭命令回显,使输出更干净
python server.py
REM 启动命令提示符
start cmd
server.py //主处理
import os
from http.server import SimpleHTTPRequestHandler, HTTPServer
import cgi # 自定义请求处理类
class MyRequestHandler(SimpleHTTPRequestHandler):# 处理GET请求def do_GET(self):if self.path == '/':# 响应200状态码self.send_response(200)# 设置响应头为text/htmlself.send_header('Content-type', 'text/html')self.end_headers()# 读取并发送upload.html文件内容with open('upload.html', 'rb') as file:self.wfile.write(file.read())else:# 调用父类方法处理其他路径的GET请求super().do_GET()# 处理POST请求def do_POST(self):if self.path == '/upload':# 解析表单数据form = cgi.FieldStorage(fp=self.rfile,headers=self.headers,environ={'REQUEST_METHOD': 'POST','CONTENT_TYPE': self.headers['Content-Type']})if 'file' in form:file_item = form['file']if file_item.filename:# 构建文件保存路径file_path = os.path.join('uploads', file_item.filename)# 将上传的文件保存到指定路径with open(file_path, 'wb') as f:f.write(file_item.file.read())# 响应200状态码self.send_response(200)# 设置响应头为text/htmlself.send_header('Content-type', 'text/html')self.end_headers()# 发送上传成功的消息self.wfile.write('文件上传成功'.encode('utf-8'))else:# 如果没有选择文件,返回400错误self.send_error(400, '未选择文件')else:# 如果缺少文件字段,返回400错误self.send_error(400, '缺少文件字段')else:# 如果路径不存在,返回404错误self.send_error(404, '未找到')# 主程序入口
if __name__ == '__main__':# 检查并创建上传目录if not os.path.exists('uploads'):os.makedirs('uploads')# 定义服务器端口号PORT = 8000 # 创建HTTP服务器with HTTPServer(('', PORT), MyRequestHandler) as httpd:print(f'服务器运行在端口 {PORT}')# 启动服务器,持续监听请求httpd.serve_forever()
upload.html //网页
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>文件上传</title>
</head>
<body><h1>上传文件</h1><form action="/upload" method="post" enctype="multipart/form-data"><label for="file">选择要上传的文件:</label><input type="file" id="file" name="file" required><br><br><button type="submit">上传</button></form>
</body>
</html>