当前位置: 首页 > article >正文

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

//1.py

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

在这里插入图片描述

回车键退出服务器


http://www.kler.cn/a/518022.html

相关文章:

  • YOLOv11改进,YOLOv11添加ASFF检测头,并添加小目标检测层(四头检测),适合目标检测、分割等任务,全网首发
  • 微信小程序云开发服务端存储API 从云存储空间删除文件
  • DeepSeek R1 模型详解与微调
  • 【NLP基础】Word2Vec 中 CBOW 指什么?
  • 软件工程的概论
  • 【第二天】零基础入门刷题Python-算法篇-数据结构与算法的介绍-五种常见的排序算法(持续更新)
  • 关于回调函数(callback)
  • 一篇博文了解JVM的各个内存区域
  • Arduino Uno 和 1.44 英寸 TFT 屏幕(SPI 接口)初体验
  • 1.24寒假作业
  • 11、性能测试及监控Nginx动静分离配置
  • 数据结构——实验八·学生管理系统
  • WPF常见面试题解答
  • C++:定义点和圆的结构体,点包含坐标x,y,圆包含点和半径,用函数来实现某个圆是否包含原点。
  • 关于opensips的帮助命令的解释
  • 华为OD机试E卷 --构成的正方形数量--24年OD统一考试(Java JS Python C C++)
  • react项目表格内容轮播,DataV-React轮播表的使用
  • 如何在docker中的mysql容器内执行命令与执行SQL文件
  • C语言操作符详解
  • Spring Boot WebMvcConfigurer:定制你的 Web 应用