python实现http文件服务器访问下载

//1.py

python 复制代码
import http.server
import socketserver
import os
import threading
import sys

# 获取当前脚本所在的目录
DIRECTORY = os.path.dirname(os.path.abspath(__file__))

# 设置服务器的端口
PORT = 8000

# 自定义Handler,将根目录设置为脚本所在目录
class MyHTTPRequestHandler(http.server.SimpleHTTPRequestHandler):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, directory=DIRECTORY, **kwargs)

# 创建服务器对象
httpd = socketserver.TCPServer(("", PORT), MyHTTPRequestHandler)

# 定义一个函数,用于监听键盘输入
def wait_for_quit():
    input("按任意键退出服务...\n")
    print("正在关闭服务器...")
    httpd.shutdown()  # 关闭服务器
    httpd.server_close()  # 释放端口
    print("服务器已关闭。")
    sys.exit(0)  # 退出程序

# 启动服务器
print(f"服务器已启动,访问地址: http://<电脑的IP地址>:{PORT}")
print(f"服务器根目录: {DIRECTORY}")

# 启动一个线程来监听键盘输入
quit_thread = threading.Thread(target=wait_for_quit)
quit_thread.daemon = True  # 设置为守护线程,主线程退出时自动结束
quit_thread.start()

# 启动服务器主循环
try:
    httpd.serve_forever()
except KeyboardInterrupt:
    print("\n服务器已关闭。")

回车键退出服务器

相关推荐
火车叼位8 小时前
也许你不需要创建.venv, 此规范使python脚本自备依赖
python
火车叼位8 小时前
脚本伪装:让 Python 与 Node.js 像原生 Shell 命令一样运行
运维·javascript·python
css趣多多8 小时前
add组件增删改的表单处理
java·服务器·前端
孤狼warrior8 小时前
YOLO目标检测 一千字解析yolo最初的摸样 模型下载,数据集构建及模型训练代码
人工智能·python·深度学习·算法·yolo·目标检测·目标跟踪
Sheep Shaun8 小时前
揭开Linux的隐藏约定:你的第一个文件描述符为什么是3?
linux·服务器·ubuntu·文件系统·缓冲区
Katecat996639 小时前
YOLO11分割算法实现甲状腺超声病灶自动检测与定位_DWR方法应用
python
野犬寒鸦9 小时前
从零起步学习并发编程 || 第七章:ThreadLocal深层解析及常见问题解决方案
java·服务器·开发语言·jvm·后端·学习
?re?ta?rd?ed?9 小时前
linux中的调度策略
linux·运维·服务器
摇滚侠9 小时前
HTTP 404 - No response body available
网络·网络协议·http
hweiyu009 小时前
Linux 命令:tr
linux·运维·服务器