使用内置的 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/html
self.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/html
self.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>