使用Python实现快速搭建本地HTTP服务器

2025-04-04 03:50

本文主要是介绍使用Python实现快速搭建本地HTTP服务器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了...

1. 概述

你是否曾经遇到过这样的场景:

  • 需要在多台设备间快速传输文件,但懒得插 U 盘?
  • 想临时共享一个本地文件,但又不想折腾 FTP、网盘、邮件?
  • 希望一键开启本地 HTTP 服务器,还能生成二维码,手机直接扫码访问?

使用Python实现快速搭建本地HTTP服务器

今天,我们就用 python 轻松实现 “一键 HTTP 文件共享”,同时结合二维码技术,让访问更简单。最终,我们还将用 PyQt6 开发一个简洁美观的 GUI,让整个工具更易用!

本文将带你完整实现该工具,包括:

用 Python 快速搭建本地 HTTP 服务器(支持 IPv4 & IPv6)

自动生成访问地址的二维码,手机扫一扫即可访问

打造 PyQt6 图形界面,一键选择共享目录并启动服务

准备好了吗?让我们开始吧!

2. 快速搭建 HTTP 文件共享服务

2.1 核心思路

Python 自带 http.server 模块,可以快速启动一个 HTTP 服务器。我们基于它创建支持 IPv4 python和 IPv6 的双栈服务器,并允许用户自定义共享目录。

2.2 代码实现

import http.server
import socketserver
import threading

class Server:
    def __init__(self, port=80):
        self.port = port
        self.stop_event = threading.Event()

    def run_server(self, ipv4="0.0.0.0", ipv6="::"):
        self.stop_event.clear()
        threading.Thread(target=self.start_http_server_v4, args=(ipv4, self.port)).start()
        threading.Thread(target=self.start_http_server_v6, args=(ipv6, self.port)).start()

    def start_http_server_v4(self, ip, port):
        with socketserver.TCPServer((ip, port), http.server.SimpleHTTPRequestHandler) as httpd:
            httpd.serve_forever()

    def start_http_server_v6(self, ip, port):
        with socketserver.TCPServer((ip, port), http.server.SimpleHTTPRequestHandler) as httpd:
            htphptpd.serve_forever()

2.3 代码解读

  • run_server() 方法启动两个线程,同时运行 IPv4 和 IPv6 服务器。
  • http.server.SimpleHTTPRequestHandler 允许 HTTP 服务器直接提供文件下载。
  • serve_forever() 让服务器一直运行,直到手动停止。

这样,我们的本地 HTTP 服务器就可以随时启动,提供文件共享服务!

3. 二维码访问:手机扫一扫,文件即刻传输

3.1 为什么用二维码

问题:服务器启动后,如何让手机http://www.chinasem.cn或其他设备快速访问?

解决方案:生成一个二维码,直接嵌入本地 HTTP 服务器的访问 URL,用户用手机扫描即可访问!

3.2 代码实现

import qrcode
import clipboard

def generate_qr_and_copy(url):
    qr = qrcode.QRCode(
        version=1, error_correction=qrcode.constants.ERROR_CORRECT_L,
        box_size=10, border=2
    )
    qr.add_data(url)
    qr.make(fit=True)
    qr.print_ascii(invert=True)
    clipboard.copy(uhttp://www.chinasem.cnrl)
    print(f"URL {url} 已复制到剪贴板")

3.3 代码解读

  • qrcode.QRCode 生成二维码,并自动调整大小。
  • qr.print_ascii(invert=True) 在终端打印二维码,便于调试。
  • clipboard.copy(url) 复制 URL,方便直接粘贴使用。

现在,用户只需要扫描二维码,即可访问共享的文件!

4. PyQt6 图形界面:让工具更易用!

4.1 为什么要 GUI

虽然命令行很强大,但对于非开发者来说,图形界面更直观。我们使用 PyQt6 创建一个简洁的 UI,用户可以一键选择共享目录,并获取访问二维码。

4.2 代码实现

from PyQt6 import QtWidgets, QtCore
from PyQt6.QtGui import QGuiApplication

class Ui_MainWindow:
    def setupUi(self, MainWindow):
        screen = QGuiApplication.primaryScreen().geometry()
        window_width, window_height = int(screen.width() / 6), int(screen.height() / 3)
        MainWindow.resize(window_width, window_height)
        
        self.centralWidget = QtWidgets.QWidget(MainWindow)
        self.gridLayout = QtWidgets.QGridLayout(self.centralWidget)
        
        self.label = QtWidgets.QLabel("二维码", self.centralWidget)
        self.gridLayout.addwidget(self.label, 0, 0)

        self.comboBox = QtWidgets.QComboBox(self.centralWidget)
        self.comboBox.addItems(["默认目录", "剪切板目录", "自定义目录"])
        self.gridLayout.addWidget(self.comboBox, 1, 0)

        self.url_label = QtWidgets.QLabel("服务地址", self.centralWidget)
        self.gridLayout.addWidget(self.url_label, 2, 0)

        MainWindow.setCentralWidget(self.centralWidget)

4.3 界面功能

✅ 选择共享目录

✅ 显示服务器访问地址

✅ 二维码自动更新

5. 终极效果演示

使用Python实现快速搭建本地HTTP服务器

使用Python实现快速搭建本地HTTP服务器

使用Python实现快速搭建本地HTTP服务器

  • 运行 GUI,选择共享目录
  • 点击“启动服务器”
  • 获取 URL 并自动生成二维码
  • 手机扫码即可访问!

这样,我们的“Python 本地 HTTP 文件共享 + 二维码访问”工具就完成了!

6. 总结 & 未来优化方向

6.1 主要收获

✅ 你学会了 如何用 Python 搭建本地 HTTP 服务器

✅ 你掌握了 二维码的生成和自动复制功能

✅ 你了解了 如何用 PyQt6 创建 GUI 界面

6.2 未来优化

支持文件上传:目前只支持下载,可以加上文件上传功能

支持 HTTPS 加密:增强安全性,防止中间人攻击

优化界面美观度:增加主题风格、自定义端口等

到此这篇关于使用Python实现快速搭建本地HTTP服务器的文章就介绍到这了,更多相关Python本地HTTP服务器内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程China编程(www.cpjspcns.com)!

这篇关于使用Python实现快速搭建本地HTTP服务器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1154086

相关文章

如何使用Lombok进行spring 注入

《如何使用Lombok进行spring注入》本文介绍如何用Lombok简化Spring注入,推荐优先使用setter注入,通过注解自动生成getter/setter及构造器,减少冗余代码,提升开发效... Lombok为了开发环境简化代码,好处不用多说。spring 注入方式为2种,构造器注入和setter

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

MySQL中比较运算符的具体使用

《MySQL中比较运算符的具体使用》本文介绍了SQL中常用的符号类型和非符号类型运算符,符号类型运算符包括等于(=)、安全等于(=)、不等于(/!=)、大小比较(,=,,=)等,感兴趣的可以了解一下... 目录符号类型运算符1. 等于运算符=2. 安全等于运算符<=>3. 不等于运算符<>或!=4. 小于运

使用zip4j实现Java中的ZIP文件加密压缩的操作方法

《使用zip4j实现Java中的ZIP文件加密压缩的操作方法》本文介绍如何通过Maven集成zip4j1.3.2库创建带密码保护的ZIP文件,涵盖依赖配置、代码示例及加密原理,确保数据安全性,感兴趣的... 目录1. zip4j库介绍和版本1.1 zip4j库概述1.2 zip4j的版本演变1.3 zip4

从入门到进阶讲解Python自动化Playwright实战指南

《从入门到进阶讲解Python自动化Playwright实战指南》Playwright是针对Python语言的纯自动化工具,它可以通过单个API自动执行Chromium,Firefox和WebKit... 目录Playwright 简介核心优势安装步骤观点与案例结合Playwright 核心功能从零开始学习

Python 字典 (Dictionary)使用详解

《Python字典(Dictionary)使用详解》字典是python中最重要,最常用的数据结构之一,它提供了高效的键值对存储和查找能力,:本文主要介绍Python字典(Dictionary)... 目录字典1.基本特性2.创建字典3.访问元素4.修改字典5.删除元素6.字典遍历7.字典的高级特性默认字典

Python自动化批量重命名与整理文件系统

《Python自动化批量重命名与整理文件系统》这篇文章主要为大家详细介绍了如何使用Python实现一个强大的文件批量重命名与整理工具,帮助开发者自动化这一繁琐过程,有需要的小伙伴可以了解下... 目录简介环境准备项目功能概述代码详细解析1. 导入必要的库2. 配置参数设置3. 创建日志系统4. 安全文件名处

使用Python构建一个高效的日志处理系统

《使用Python构建一个高效的日志处理系统》这篇文章主要为大家详细讲解了如何使用Python开发一个专业的日志分析工具,能够自动化处理、分析和可视化各类日志文件,大幅提升运维效率,需要的可以了解下... 目录环境准备工具功能概述完整代码实现代码深度解析1. 类设计与初始化2. 日志解析核心逻辑3. 文件处

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

一文详解如何使用Java获取PDF页面信息

《一文详解如何使用Java获取PDF页面信息》了解PDF页面属性是我们在处理文档、内容提取、打印设置或页面重组等任务时不可或缺的一环,下面我们就来看看如何使用Java语言获取这些信息吧... 目录引言一、安装和引入PDF处理库引入依赖二、获取 PDF 页数三、获取页面尺寸(宽高)四、获取页面旋转角度五、判断