关于office解密的一个库
在工作中偶然的机会需要我使用python实现word的解密,已知密码需要解密或者进行爆破行为,但是苦苦没有找到合适的方法,但是偶然间fa msoffcrypto-toolmsoffcrypto-tool(以前称为ms-offcrypto-tool)是Python工具和库,用于使用密码,中间密钥或生成其托管密钥的私钥解密加密的MS Office文件。 安装: pip install msoffcrypto-tool 使用方式: msoffcrypto-tool encrypted.docx decrypted.docx -p 你的密码 测试是否有加密: msoffcrypto-tool document.doc --test -v 代码用法1234567891011import msoffcryptoencrypted = open("encrypted.docx", "rb")file =...
文章关键字提取
关键字提取关键字提取作为文本分析的重要一环,现在已经拥有很多工具可以使用,一般工具被分为两类,第一类是基于算法的关键字提取,也就是将文本进行分词操作后对文本当中词语出现的频率做出统计,同时对一些助词或者语气词进行过滤操作得到较为准确的关键词。第二类就是基于机器学习的关键词提取,需要对文章进行相应的向量计算,具体的算法需要依据实际情况考量。本文只展示第一种: 123456789101112131415# 加载模块from textrank4ch.TextRank4Keyword import TextRank4Keywords # 准备预料, 输入时一个字符长串, 可含特殊字符corpus = ...
(fastapi四)文件传输
StreamingResponse先看案例: 1234567891011121314from fastapi import FastAPIfrom fastapi.responses import StreamingResponseapp = FastAPI()async def fake_video_streamer(): for i in range(10): yield b"some fake video bytes"@app.get("/")async def main(): return StreamingResponse(fake_video_streamer()) 该方法在返回过程当时会将数据以流的形式进行返回,官方对此描述:采用异步生成器或普通生成器/迭代器,然后流式传输响应主体。在作用与文件返回的时候可以这样写: 1234567891011121314from fastapi import FastAPIfrom fastapi.responses import...
127.0.0.1与localhost的区别
127.0.0.1 地址而非域名 127.0.0.1在Windows等系统的正确解释是:本机地址(本机服务器或回送地址) 127.0.0.1是一个环回地址,根本不是一个网络地址 127.0.0.1是通过网卡传输的,依赖网卡,并受到网络防火墙和网卡相关的限制 检测本机的回路是否正常,如果得到一个成功的ping返回,则可以认定你的IP栈是被初始化过的,TCP/IP协议安装正确。如果失败,那么你的IP栈失败,TCP/IP协议必须重新安装 不联网、网卡传输,受防火墙和网卡的限制、本机访问 localhost 域名而非地址 localhost也叫local ,正确的解释是:本地服务器 localhost 是一个域名,在过去它指向 127.0.0.1 这个IP地址。在操作系统支持 ipv6 后,它同时还指向ipv6 的地址 [::1]...
(fastapi三)中间件
中间件blog_img/fastapi系列/(fastapi一)安装与简单使用/封面.jpg“中间件”是一个函数,它在每个请求被特定的路径操作处理之前,以及在每个响应返回之前工作. 它接收你的应用程序的每一个请求. 然后它可以对这个请求做一些事情或者执行任何需要的代码. 然后它将请求传递给应用程序的其他部分 (通过某种路径操作). 然后它获取应用程序生产的响应 (通过某种路径操作). 它可以对该响应做些什么或者执行任何需要的代码. 然后它返回这个 响应. 案例1234567891011121314import timefrom fastapi import FastAPI, Requestapp = FastAPI()@app.middleware("http")async def add_process_time_header(request: Request, call_next): start_time = time.time() response = await call_next(request) ...
静态资源与动态资源
静态资源访问简单理解WEB服务静态和动态资源请求过程 用户发起访问 服务器端接收到请求,该请求到达服务器的内核空间,因为tcp/ip协议工作在内核空间;到达内核空间后,发现访问的是80端口的套接字,通过路由和相关解码,请求被转到服务器的用户空间,也就是转到了web服务上; 请求到达用户空间后,发现请求的是一个文件,然后继续把请求转到内核空间,内核空间通过内核在磁盘上获取对应文件; 请求在内核空间获取到对应文件后,把文件返回至用户空间即web服务; 请求结果到达用户空间的web服务上后,把结果再通过套接字回到内核空间; 内核空间把结果通过网络tcp/ip协议栈返回至客户端。 动态资源请求简单理解WEB服务静态和动态资源请求过程 用户发起访问 服务器端接收到请求,该请求到达服务器的内核空间,因为tcp/ip协议工作在内核空间;到达内核空间后,发现访问的是80端口的套接字,通过路由和相关解码,请求被转到服务器的用户空间,也就是转到了web服务上; 请求到达用户空间后,发现请求的是一个动态页面,然后根据相关协议调用php解释器程序; ...
python海象语法
在我的工作当中,无意间接触到了一个别人写的一段代码,像这样:if (n := len(a)) > 10:,凭借我的直觉,我能够轻易的读懂这段代码,但是我却从来没见过,于是我搜了一下,才知道这是python3.8的新语法,叫做海象语法,因为冒号像眼睛,等号像牙齿,所以被成为海象语法。 海象语法官方给出了几个案例: 12345678910111213141516# 赋值表达式有助于避免调用 len() 两次if (n := len(a)) > 10: print(f"List is too long ({n} elements, expected <= 10)")# 一次用于测试是否发生了匹配,另一次用于提取子组discount = 0.0if (mo := re.search(r'(\d+)% discount', advertisement)): discount = float(mo.group(1)) / 100.0# Loop over fixed length...
ElasticSearch之python总结
对于ESES数据库本身作为一种分布式的、查询优势、拓展优势、容错优势…..等等众多优点的数据库。更多的特点还是自行百度吧 python操作安装: 1pip3 install elasticsearch 安装也就那样吧。 简单使用过热推荐,如果需要学习一个新的库的使用的时候,看源码与看官方文档是一个好习惯,因此本文仅列出少数操作,以使用入门讲解为主要核心。首先附上官方文档:https://elasticsearch-py.readthedocs.io/ 点击链接会直接跳转到最新版本的官方文档。 操作在使用python进行操作的时候,首先需要连接数据库,在启动数据库之后采用以下代码进行数据库连接: 1234from elasticsearch import Elasticsearch# 实例化一个ip为localhost,端口为9200,允许超时一小时的es对象client = Elasticsearch("http://IP:9200") #...
特殊类型的声明
在类型声明的部分,提供的类型声明大多都是官方给定的类型,如:int,float,str,list,dict,set等等,但是某些时候当我们使用一些特殊的变量的时候,类型并不存在于官方给定的选项中。比如某些python的库创造的变量是具有自定义的类型的,这个时候该怎么操作呢?以下给出两个例子: 库当中的类型先看案例: 1234567891011121314151617html_doc = """<html><head><title>The Dormouse's story</title></head><body><p class="title"><b>The Dormouse's story</b></p><p class="story">Once upon a time there were three little sisters; and their...
连接池
什么是连接池?在网上常常给出这样的解释:数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。 更通俗一点就是,连接池维护着项目于数据库之间的联系,保证项目不会过于频繁的去连接数据库导致数据库压力过大。 为什么要使用连接池?数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。一个数据库连接对象均对应一个物理数据库连接,每次操作都打开一个物理连接,使用完都关闭连接,这样造成系统的性能低下。如果连接池存在,操作只需要把任务丢给连接池,至于对数据库操作的进程等一系列问题,全权交给连接池来进行操作,由连接池自己控制与数据库的访问与操作。在没有连接池的情况下,连接数据库通常需要以下步骤: TCP建立连接的三次握手 MySQL认证的三次握手 真正的SQL执行 MySQL的关闭 TCP的四次握手关闭 ...


文件传输/封面.png)

中间件/封面.png)









