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

 更新时间:2025年04月03日 14:27:04   作者:探客白泽  
这篇文章主要介绍了如何使用Python快速搭建本地HTTP服务器,轻松实现一键 HTTP 文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了解下

1. 概述

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

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

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

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

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

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

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

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

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

2.1 核心思路

Python 自带 http.server 模块,可以快速启动一个 HTTP 服务器。我们基于它创建支持 IPv4 和 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:
            httpd.serve_forever()

2.3 代码解读

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

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

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

3.1 为什么用二维码

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

解决方案:生成一个二维码,直接嵌入本地 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(url)
    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. 终极效果演示

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

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

6. 总结 & 未来优化方向

6.1 主要收获

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

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

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

6.2 未来优化

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

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

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

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

相关文章

  • Python-split()函数实例用法讲解

    Python-split()函数实例用法讲解

    在本篇文章里小编给大家整理的是一篇关于Python-split()函数实例用法讲解,有兴趣的朋友们可以学习下。
    2020-12-12
  • 使用并行处理提升python for循环速度的过程

    使用并行处理提升python for循环速度的过程

    Python 是一门功能强大的编程语言,但在处理大规模数据或复杂计算任务时,性能可能成为一个瓶颈,这篇文章主要介绍了使用并行处理提升python for循环速度,需要的朋友可以参考下
    2023-06-06
  • 从python读取sql的实例方法

    从python读取sql的实例方法

    在本篇内容里小编给各位整理的是关于从python读取sql的知识点总结,需要的朋友们可以学习参考下。
    2020-07-07
  • 使用python把xmind转换成excel测试用例的实现代码

    使用python把xmind转换成excel测试用例的实现代码

    这篇文章主要介绍了使用python把xmind转换成excel测试用例的实现代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • 用Python的Django框架编写从Google Adsense中获得报表的应用

    用Python的Django框架编写从Google Adsense中获得报表的应用

    这篇文章主要介绍了用Python的Django框架编写从Google Adsense中获得报表的应用,主要利用了官方的Google Adsense API,需要的朋友可以参考下
    2015-04-04
  • python 实现一个简单的线性回归案例

    python 实现一个简单的线性回归案例

    这篇文章主要介绍了python 实现一个简单的线性回归案例,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-12-12
  • 基于Python获取docx/doc文件内容代码解析

    基于Python获取docx/doc文件内容代码解析

    这篇文章主要介绍了基于Python获取docx/doc文件内容代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • Python调用Windows命令打印文件

    Python调用Windows命令打印文件

    Windows命令行打印文件使用print 命令,具体用法可使用help print查看,下面是使用Python调用print指令执行打印文件功能的代码,需要的朋友可以参考下
    2020-02-02
  • python 检查文件mime类型的方法

    python 检查文件mime类型的方法

    今天小编就为大家分享一篇python 检查文件mime类型的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • python的三种等待方式及优缺点小结

    python的三种等待方式及优缺点小结

    这篇文章主要介绍了python的三种等待方式及优缺点的相关资料,三种等待元素加载的方法分别是强制等待、隐式等待和显式等待,并详细比较了它们的优缺点,需要的朋友可以参考下
    2024-12-12

最新评论