python http模块快速搭建“简单”服务器笔记 python -m http.sever

快速搭建本地HTTP服务器:`python -m http.server`详解 是Python标准库中的模块,基于http和构建。通过命令,可在当前目录启动一个基础HTTP服务器,支持文件浏览和下载。零配置启动本地服务器支持静态文件服务(HTML/CSS/JS/图片等)提供目录浏览功能支持自定义端口和绑定地址通过继承✅极简启动:一行命令搭建本地服务✅零依赖:Python 3.x内置支持✅灵活配置:支持端口/IP/目录定制临时开发工具而非生产服务器。下次需要快速共享文件或测试网页时,不妨打开终端尝试这个实用命令!知识扩展:在Python 2.x中可使用。 阅读详情

极简运行

python -m http.sever

或

# test.py
import http.server
import socketserver

PORT = 8000

Handler = http.server.SimpleHTTPRequestHandler

with socketserver.TCPServer(("", PORT), Handler) as httpd:
    print("serving at port", PORT)
    httpd.serve_forever()

在这里插入图片描述
在这里插入图片描述

CGI-Bin

启动服务

import os
from http.server import HTTPServer, CGIHTTPRequestHandler
webdir="C:\\Users\\admin\\Desktop\\http"
os.chdir(webdir)
HTTPServer(("127.0.0.1", 8080), CGIHTTPRequestHandler).serve_forever()
import pickle
import os

student_keys = ("name", "gender", "age", "score")

if os.path.exists("student.data"):
    with open("student.data", "rb") as file:
        student = pickle.load(file)
    student = student or {}
else:
    student = {}

if not student:
    student = dict.fromkeys(student_keys, "")

header = "Content-Type: text/html\n"
content = """
<html>
  <body>
    <form action="/cgi-bin/update.py" method="POST">
        <table>
            <tr>
                <td>name: </td>
                <td><input name="name" value="{name}"/></td>
            </tr>
            <tr>
                <td>gender:</td>
                <td><input name="gender" value="{gender}"/></td>
            <tr>
            <tr>
                <td>age: </td>
                <td><input name="age" value="{age}"/></td>
            </tr>
            <tr>
                <td>score: </td>
                <td><input name="score" value="{score}"/></td>
            </tr>
            <tr>
                <td style="padding-top: 10px" align="center" colspan="2">
                    <button type="submit">Submit</button>
                </td>
            </tr>
        </table>
    </form>
  </body>
</html>
"""
import os
import cgi
import pickle

student_keys = ("name", "gender", "age", "score")
if os.path.exists("student.data"):
    with open("student.data", "rb") as file:
        student = pickle.load(file)
    student = student or {}
else:
    student = {} 

if not student:
    student = dict.fromkeys(student_keys, "")

form = cgi.FieldStorage()
for key in student_keys:
    if key in form and form[key].value:
        student[key] = form[key].value

with open("student.data", "wb") as file:
    pickle.dump(student, file)

header = "Content-Type: text/html\n"
content = """
<html>
<body>
<h1>update successfully, will skip to display page: <span id="count_down">3</span></h1>
<script>
   var count = 3 
   timer_id = setInterval(function(){
       count = count -1
       if(count == 0) {
           clearInterval(timer_id)
           location.href="/cgi-bin/student.py"
       } else {
           document.getElementById("count_down").innerHTML = "" + count
       }
   },1000)
</script>
</body>
</html>
"""

在这里插入图片描述
你可能应该访问“localhost:81/cgi-bin/index.py”。因为“localhost:81/cgi-bin/”是一个目录,不是一个python script。

使用体验

  • 当在文件服务器的模式下,可以直接访问并渲染html文件,但是当我使用以下代码时,浏览器提示var myChart = echarts.init(document.getElementById('main'));无法找到echarts对象。
import os
import cgi
import pickle

# student_keys = ("name", "gender", "age", "score")
# if os.path.exists("student.data"):
#     with open("student.data", "rb") as file:
#         student = pickle.load(file)
#     student = student or {}
# else:
#     student = {}
#
# if not student:
#     student = dict.fromkeys(student_keys, "")

form = cgi.FieldStorage()
# for key in student_keys:
#     if key in form and form[key].value:
#         student[key] = form[key].value

# with open("student.data", "wb") as file:
#     pickle.dump(student, file)

header = "Content-Type: text/html\n"
content = """
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>bar</title>
    <!-- 引入 echarts.js -->
    <script src="echarts.min.js"></script>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="width: 900px;height:600px;"></div>

<script type="text/javascript">
// 基于准备好的dom,初始化echarts实例

var myChart = echarts.init(document.getElementById('main'));

// 指定图表的配置项和数据
var option = {
    // 标题
    title: {
        text: 'ECharts 入门示例'
    },
    // 工具箱
    toolbox: {
        show: true,
        feature: {
            saveAsImage: {
                show: true
            }
        }
    },
    // 图例
    legend: {
        data: ['销量']
    },
    // x轴
    xAxis: {
        data: ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
    },
    yAxis: {},
    // 数据
    series: [{
        name: '销量',
        type: 'bar',
        data: [5, 20, 36, 10, 10, 20]
    }]
};

// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
</script>
</body>
</html>
"""
print(header + content)

参考与更多

https://docs.python.org/3/library/http.server.html
用 Python 的 SimpleHTTPServer 模組快速建立一個臨時網頁伺服器(Web Server)
使用Python的http.server实现一个简易的Web Api对外提供HanLP拼音转换服务
simple http server for upload and download

【Python】快速创建一个简易 HTTP 服务器(http.server) 对于局域网的其他用户,可通过你的主机 IP + 端口号访问,如你的主机 IP 是 192.168.0.1,那么将网址 192.168.0.1:8000 发送给你的同事或同学,他们也可以看到 index.html 文件渲染的内容。如果通过 VSCode 连接远程服务器,使用 http.server 开启一个端口后,会自动映射到本地,这样在本地浏览器就能查看和下载远程服务器资源。http.server 也支持在代码中调用,导入对应的类和函数即可。通过在命令行传入 --cgi 参数,可以启用。 阅读详情

相关推荐

用python -m http.server搭一个简易的本地局域网

使用 python -m http.server 搭建一个简易的本机局域网 工作时同事间几mb小文件的传输,一般使用QQ或者微信就足够了,但当传输文件几百MB或者几十G时,这种方法的效率就显得不足了。本篇就是简单说明一个python小功能,让大家能利用python方便的搭建一个本地局域网。跟同事测试时,速度轻松达到800mb/s。 搭建只需三步就可以: 1.设置python路径为环境...

ma7986321的博客 6万+

python -m http.server 迅速搭建本地任意目录http.server服务器

如果想把命令E:\zpic作为提供下载的目录,那么在cmd里cd到该目录下,并执行命令:python -m SimpleHTTPServer 默认的端口号是8000, 服务器根目录就是运行python命令的工作目录 如果提示错误: No module named SimpleHTTPServer 则试一下命令: python -m http.server 用http://127.0.0.1:8000即可访问目录下内容 或者加上端口号:python -m http.server 3002

1万+

基于Qwen3-VL-30B大模型的Python单元测试AI断言实践

在软件工程领域,自动化测试是保障代码质量的关键环节,其核心原理是通过预设断言验证程序行为是否符合预期。随着多模态大模型技术的发展,AI驱动的语义理解能力为传统测试框架带来了新的技术价值,能够处理传统断言难以覆盖的模糊匹配、自然语言验证和跨模态评估等复杂场景。本文聚焦于将Qwen3-VL-30B多模态大模型集成到Python单元测试流程中,通过构建AI断言适配器,实现对大模型Prompt工程和异步调用的优化,为自动化测试提供了更智能的语义验证能力,显著提升了测试用例在复杂逻辑和上下文理解场景下的覆盖效率。

cqwf95925的博客 487

python linux服务_非常简单的Python HTTP服务

导读如果因为某种需求急需一个web服务器,而又不至于去在httpd和nginx中配置一个新的虚拟主机,Python或许可以帮上这个临时的小需求。使用Python可以完成一个简单的内建 HTTP 服务器。把需要共享的目录或者文件都以HTTP的方式展示出来。这是一个可以非常方便实用的,用来共享文件或者临时测试的方式。实现一个微型的HTTP服务程序来说是很简单的事情,在Python下,只需要一个命令行...

weixin_42524864的博客 563

京东开源实时视频视觉语言模型:从部署到应用的全栈实践指南

这次我们来看一个来自京东的开源项目:一个全栈开源的实时视频视觉语言交互模型。这个名字听起来有点长,但核心很简单:它能让你的程序“看懂”视频,并和你“聊”视频里的内容。想象一下,你上传一段视频,它能实时分析画面,回答你关于视频里发生了什么、某个物体是什么、人物在做什么等问题。这对于内容审核、智能客服、视频搜索、无障碍辅助等场景,价值不言而喻。 这个项目的重点不在于概念有多新,而在于它是否真的能用起来。从“全栈开源”和“实时视频”这两个关键词来看,它很可能提供了从模型到前后端的一整套解决方案,目标是降低部署门槛

weixin_30633405的博客 1907

从零构建私有化AI代码助手:开源替代方案实战指南

代码理解与问答是AI在软件开发领域的重要应用,其核心原理是通过检索增强生成技术,将代码库转化为可查询的知识库。这项技术的价值在于显著降低复杂代码库的认知门槛,提升开发效率和代码维护质量。在实际应用场景中,企业常面临数据安全和定制化需求,因此私有化部署的开源方案成为关键需求。本文聚焦于利用LangChain和Ollama等开源工具,构建一个功能全面的本地化代码智能助手,实现类似Greptile的核心功能,同时确保代码数据完全自主可控。通过实战演示,读者将掌握从环境搭建到系统集成的完整流程,打造安全、可定制的内

weixin_33860528的博客 441

linux虚拟机python搭建web服务器_使用python SimpleHTTPServer 快速搭建Web服务器

python -m SimpleHTTPServer 8080 #不指定端口默认为8000执行上面的命令,就会启动web服务器了,可以下载用户启动路径的文件。一个网友根据SimpleHTTPServer源码写了一个支持上传功能的版本。我贴到附件。保持后台运行,退出shell也不会关闭的命令nohuppython -m SimpleHTTPServer 8080 &结束后台进程eval $...

weixin_39927288的博客 308

Nuclei漏洞扫描器:从零安装到实战配置的完整指南

在网络安全领域,自动化漏洞扫描是识别和修复安全风险的核心技术。其原理是通过模拟攻击行为,对目标系统进行安全检测,从而发现潜在漏洞。这项技术的价值在于能够显著提升安全测试的效率和覆盖率,广泛应用于渗透测试、红蓝对抗和日常安全巡检等场景。Nuclei作为一款基于YAML模板的高性能漏洞扫描器,凭借其社区驱动的模板库和轻量级设计,实现了对CVE漏洞的快速响应和检测。通过本指南,您将掌握Nuclei的安装、配置及实战技巧,有效提升安全自动化能力。

cnvdkx2837的博客 334

python -m http.server 80

python3: python -m http.server 80 python2: python -m SimpleHTTPServer 9004

bin1108的博客 3208

Azure AI Search向量搜索实战:混合检索架构与企业级调优

向量搜索是现代语义检索的核心技术,其本质是将文本映射为高维空间中的稠密向量,通过相似度计算实现语义匹配。相比传统关键词检索,它突破了字面匹配局限,支撑RAG、智能客服、知识库问答等关键场景。但实际落地中,纯向量方案常因长尾Query失效、多模态内容失焦、权限控制粗放等问题难以交付。Azure AI Search通过融合BM25倒排索引与HNSW向量索引的混合检索架构,在精度、性能与合规性上取得平衡,尤其适合需对接私有embedding模型、满足ISO 27001审计、实施细粒度安全过滤的企业级应用。本文聚焦

weixin_33795743的博客 621

IDEA系列(四):IDEA导入Maven工程项目并配置Tomcat启动

本片文章主要介绍如何导入一个存在的maven项目并配置Tomcat启动项目,方便自己使用,也分享出来,希望可以帮助到其他人。

低调D树苗的博客 1243

利用python搭建本地http server

引用 本地服务器文件下载简单搭建Python SimpleHTTPServer 一. 如何搭建 #1. python2 > python -m SimpleHTTPServer 80 #2. python3 > python3 -m http.server 80 二. 实例 2.1 在一台pc上启动http server 2.2 在另一台pc上访问http server ...

vertor11的博客 1011

Zynq-PS-SDK(12) 之 VDMA+VTC+AXI4S-VideoOut 视频通路硬件搭建

前面分别叙述了《Zynq-PS-SDK(9) 之 VDMA》、《Zynq-PS-SDK(10) 之 VTC》以及《Zynq-PS-SDK(11) 之 AXI4-Stream To Video Out》;搭建一个简单的视频通路(Framebuffer -> HDMI)就要用到这些个模块,总体的设计框图如下所示: 视频数据的 Framebuffer 在 DDR 中,通过 Processing System 写入进去; 数据通过高带宽的 AXI4 接口(这里用到了 HP AXI,即 64bits 带

StephenZhou 5589

python核心编程:windows环境下,利用CGIHTTPServer简单网页搭建

最近师弟在学习python,上面有个网页的搭建的小作业,下面在这篇博客详细讲解一下如何利用CGIHTTPServer简单网页搭建。(博客里面的图为网络摘取,代码步骤真实可靠) 环境:windows 语言:python2.7 首先创建一个文件夹www,在该目录下创建cgi-bin文件夹(我试过,可以不创建,直接在该文件夹下创建脚本文件也可,其中www文件为服务器的根目录,里面的文件为服务器目录)

中志融一的博客 970

华为海思IC设计岗位笔试全解析:物理、电路与工艺三大方向备考指南

本文全面解析华为海思IC设计岗位笔试的物理、电路与工艺三大方向备考要点。针对物理设计方向,重点讲解半导体能带理论、载流子输运机制等核心考点;电路设计方向涵盖Verilog语法、UVM验证等关键技术;工艺方向则深入探讨FinFET工艺、光刻技术等前沿知识。提供高效备考策略和应试技巧,助力考生提升通过率。

weixin_29196613的博客 1084

制作一个有趣的涂鸦物联网小项目(涂鸦模组SDK开发 CBU BK7231N WiFi+蓝牙模组 HSV彩色控制)

实现的功能: l APP控制月球灯 l 本地月球灯控制 l APP控制“大白”颜色,实现各种颜色变身 l 门状态传感器状态APP显示 l 网络状态指示灯,连接服务器长亮,断开后闪烁 l 配网按键 l 云端定时功能 l 云端报警提示功能 l 云端历史数据查看 l 远程升级介绍 视频演示:【开源】制作一个有趣的涂鸦物联网小项目(涂鸦模组SDK开发 CBU BK7231N WiFi+蓝牙模组 HSV彩色控制)_哔哩哔哩_bilibili 一、界面展示 ...

东小东博客 7115

python 简单HTTP server

起因: 需要临时构建一个HTTPserver,用于临时传输文件等功能。 (大作业做横向渗透的时候也用了这个思路,上一跳开启httpserver,利用RCE漏洞执行wget获取可执行程序,再调起来继续扩散) 用法: python2下: 例如开启7878端口,web目录就是执行该命令是的本机目录。 python -m SimpleHTTPServer 7878 python3下用上述命令会报错: python: No module named SimpleHTTPServer pytho

gibbs_的博客 357

东方财富网API接口逆向分析:手把手教你破解那个带jQuery回调的股票数据接口

本文详细解析了东方财富网股票数据API接口的逆向工程实战技巧,重点介绍了JSONP接口的核心机制、参数解析及数据处理方法。通过Python代码示例演示了如何构造请求、处理分页数据及应对反爬策略,帮助开发者高效获取股票数据。文章还提供了完整的爬虫实现案例和常见问题排查指南。

weixin_30790841的博客 714

还在用Python自带的httpserver?快开感受下更炫酷的Vip版功能吧!

python HttpServer python2与python3都可以基于SimpleHTTPServer,快速创建一个http服务器,但方法略有不同。 首先进入你需要设置的http服务器目录 (我以自己电脑路径:F:/Working~Study) ,即进入到该目录下,然后: python2: python -m SimpleHTTPServer 8888 python3: ...

清风Python 640

别再只会用QTcpSocket了!手把手教你用QSslSocket为你的Qt网络应用加上SSL/TLS加密(附完整代码示例)

本文详细介绍了如何将Qt网络应用从QTcpSocket迁移到QSslSocket,实现SSL/TLS加密传输。通过对比API差异、解析核心机制和提供完整代码示例,帮助开发者快速掌握安全网络编程技巧,有效防范数据窃听和中间人攻击等安全风险。

weixin_30654583的博客 400

SAP PPDS启发式排产实战:从零配置到自定义规则开发(附ABAP代码示例)

本文详细介绍了SAP PPDS启发式排产的实战应用,从基础配置到自定义规则开发的全流程。通过ABAP代码示例,展示了如何实现多目标优化、实时响应和约束可视化,帮助企业提升订单交付率、减少设备闲置时间。文章还包含开发环境准备、标准模板解析、自定义开发步骤及性能优化技巧,适合制造业数字化转型的实践参考。

seed的博客 183

Python+Selenium自动化抢票实战:从环境搭建到反爬策略

网络爬虫与自动化测试是提升工作效率的关键技术,其核心原理是通过程序模拟人类操作浏览器或发送网络请求,实现对网页数据的抓取与交互。在Python生态中,Selenium作为主流的浏览器自动化工具,能够完整执行JavaScript并模拟真实用户行为,为处理动态网页和复杂交互场景提供了强大支持。结合Requests库进行轻量级HTTP请求,可以构建高效稳定的数据采集与自动化解决方案。这类技术在数据采集、UI测试、业务流程自动化等领域具有广泛应用价值。本文聚焦于演唱会票务场景,详细讲解如何利用Selenium模拟登

weixin_34067102的博客 485

Android13系统设置第三方app为设备所有者

DevicePolicyManagerService.java文件所在目录是frameworks/base,记得将包类名换成自己app的。2. 将拷贝到系统分区下的两个xml文件继续通过init.rc服务拷贝到data/system/目录下并修改权限。1. 拷贝设备所有者和设备管理器两个对应的xml文件到系统分区。

wzh048503的博客 2502

Flask Web开发:从基础到企业级应用实践

Web开发框架是现代应用开发的核心工具,其核心原理是通过封装HTTP协议处理流程提升开发效率。Flask作为Python生态中的轻量级WSGI框架,采用微内核设计理念,通过Werkzeug处理底层请求响应,结合Jinja2实现模板渲染。这种架构优势在于开发者可以按需组合扩展模块,既能快速构建原型,也能通过SQLAlchemy等扩展实现企业级数据持久化。典型的应用场景包括RESTful API开发(支持JSON序列化)、微服务架构(配合Docker容器化)以及数据可视化后台(集成图表库)。在工程实践中,合理的

weixin_34242819的博客 448

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

RTX 5060 Ti玩转ComfyUI:从入门到精通,榨干显卡性能的AI绘画指南

在AI绘画领域,Stable Diffusion作为开源的文生图模型,其核心原理是通过扩散模型在潜空间中对噪声进行迭代去噪,最终生成高质量图像。这项技术的价值在于将创意快速可视化,极大地提升了数字艺术创作和内容生产的效率。在实际应用中,用户常通过WebUI等图形界面进行操作,但对于追求更高性能和自定义工作流的创作者,节点式工作流工具提供了更优解。本文聚焦于如何利用ComfyUI这一高效工具,特别是针对RTX 5060 Ti等中端显卡进行性能优化和流程搭建。通过模块化的节点连接,用户可以深入理解从提示词编码、

weixin_34232744的博客 337

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

OpenClaw Active Memory:构建AI智能体长期记忆与个性化服务的核心引擎

在人工智能领域,尤其是大语言模型(LLM)应用中,上下文管理和长期记忆是实现深度个性化交互的关键技术瓶颈。传统方案如拼接历史对话或单纯使用向量数据库,往往面临上下文窗口有限、记忆混杂、关键事实难以精准召回等问题。其核心原理在于通过结构化提取、关联存储与主动召回机制,将原始对话信息转化为可理解、可关联、可推理的记忆网络。这一技术价值在于极大提升了AI智能体在持续服务中的连贯性与精准度,让模型能够基于用户历史偏好与关键事实进行决策,而非每次对话都“从头开始”。在电商客服、个人健康助手、企业流程自动化等需要长期陪

weixin_30417487的博客 321

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

上一篇: 生物化学 药物设计与研发笔记:变构(Allostery)药物设计
下一篇: 生物化学 核磁共振 氢谱 n+1定律 邻碳耦合 同碳耦合
FakeOccupational
博客等级 码龄6年 2万+粉丝 1727原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值