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服务器已关闭。")

回车键退出服务器

相关推荐
李可以量化14 分钟前
Tornado 从入门到精通(二)下:协程调用方式与经典使用模式
python
雪碧透心凉_23 分钟前
Python OpenCV图像处理入门
图像处理·python·opencv
Misnearch32 分钟前
MCP以及底层协议、传输模式
http·mcp·json-rpc
李可以量化37 分钟前
Tornado 从入门到精通(二)上:协程核心机制详解
python
晴天1640 分钟前
AgentLoop分享(上): 让 AI 真正“自主干活“-Day15
人工智能·python
运维行者_1 小时前
企业带宽监控工具实战:网络流量分析与异常排查的5个关键能力
运维·服务器·开发语言·网络·分布式·后端·php
Patrick在香港1 小时前
Python爬虫框架实战:优雅抓取香港政府公开API数据的通用方案
java·开发语言·爬虫·python·ai编程·数据可视化·可用性测试
March.s1 小时前
Nginx 服务器反向代理实战指南
服务器·nginx·github
刚入门的大一新生1 小时前
Linux-Linux第一个系统程序-进度条
linux·运维·服务器
李白的天不白1 小时前
python下载脚本
python