python库学习
文章平均质量分 51
NxxCalm
坚持编程
展开
-
单元测试框架
https://en.wikipedia.org/wiki/Unit_testinghttps://en.wikipedia.org/wiki/List_of_unit_testing_frameworkshttps://docs.python-guide.org/writing/tests/https://docs.python.org/zh-cn/3/library/unittest.html#module-unittesthttps://docs.python.org/zh-cn/3/usi.原创 2022-05-03 12:41:32 · 214 阅读 · 0 评论 -
python常用模块
os模块负责程序与操作系统的交互,提供了访问操作系统底层的接口sys模块负责程序与python解释器的交互,提供了一系列的函数和变量,用于操控python的运行时环境运行信息系统平台sys.platform解释器版本信息sys.version sys.version_info当前Unicode实现所使用的默认字符串编码名称sys.getdefaultencoding()命令行传递参数sys.argvsys.getrefcount()对象引用计数,返回的计数通常比预期的多一,因为它包括了作.原创 2022-05-02 15:00:10 · 163 阅读 · 0 评论 -
python发布模块
distutilshttps://docs.python.org/zh-cn/3.7/distutils/introduction.htmldistutils可以用来在Python环境中构建和安装额外的模块。新的模块可以是纯Python的,也可以是用C/C++写的扩展模块,或者可以是Python包,包中包含了由C和Python编写的模块。模块构建流程编写setup脚本(一般是setup.py)编写一个setup配置文件(可选)创建一个源码发布创建一个或多个构建(二进制)发布(可选)s原创 2022-05-02 14:53:16 · 1510 阅读 · 0 评论 -
unicode_escape转义字符串普通字符相互转化
用unicode_escape转义字符串普通字符相互转化def convert_unicode_escape(): ''' 转义字符串普通字符相互转化 ''' #转义字符串 s1 = u'\u597d\u4eba' #普通字符串 s2 = r'\u597d\u4eba' print(s1, s2) #out ---- 好人 \u597d\u4eba print( s1.encode('unicode_esca原创 2022-05-01 15:06:24 · 1076 阅读 · 0 评论 -
python集合set运算
集合支持 x in set和 for x in set构建方法使用花括号内以逗号分隔元素的方式: {'jack', 'sjoerd'}使用集合推导式: {c for c in 'abracadabra' if c not in 'abc'}使用类型构造器: set(), set('foobar'), set(['a', 'b', 'foo'])比较运算aa = {'a', 'b', '444'}bb = {'a', 'b', 'c'}cc = {'a', 'b'}dd = ..原创 2022-02-23 22:48:19 · 471 阅读 · 0 评论 -
python __eq__ == 比较运算符
参考官方文档https://docs.python.org/zh-cn/3/reference/datamodel.html?highlight=eq#object.eqx==y调用x.__eq__(y)默认情况下,object 通过使用 is 来实现__eq__(),并在比较结果为假值时返回NotImplementedclass A(object): def __init__(self, age): self.age = age def __eq__(.原创 2022-02-19 23:57:50 · 1239 阅读 · 0 评论 -
pyinstaller简单使用
https://pyinstaller.readthedocs.io/en/stable/pyinstaller打包py脚本为系统可执行程序格式,windows下支持打包为exe可执行文件。安装pip install pyinstaller工作流程对脚本进行解析在脚本目录生成 xxx.spec 文件创建一个 build 目录,写入一些日志文件和中间流程文件到 build 目录创建 dist 目录,生成可执行文件到 dist 目录使用pyinstaller -F xxx.py-.原创 2022-02-06 02:08:08 · 788 阅读 · 0 评论 -
python通过pywin32使用COM组件
https://mhammond.github.io/pywin32/pywin32模块封装了几乎所有的Windows API,可以从Python直接调用,安装模块pip install pywin32,安装完成后附带帮助文件Lib\site-packages\PyWin32.chmpython使用COM组件# python调用COM组件import win32com.clientimport pythoncomtry: # 使用ProgID with win32com.c.原创 2021-12-23 15:45:39 · 2020 阅读 · 0 评论 -
sum二维数组扁平为一维数组
leetcode LCP39 无人机方阵 python代码解法技术群有小伙伴不理解,自己探索解读下from typing import Listfrom collections import Counterclass Solution: def minimumSwitchingTimes(self, source: List[List[int]], target: List[List[int]]) -> int: source, target = Counter(s原创 2021-11-04 23:21:53 · 314 阅读 · 0 评论 -
tuple比较大小
https://howtodoinjava.com/python/misc/compare-tuples/tuple比较大小内置了__lt__ __le__ __gt__ __ge__通过比较两个元组中对应的元素按字典顺序进行比较的,第一个元组的第一项与第二个元组的第一项进行比较;如果它们不相等,那就是比较的结果。否则考虑第二项,然后是第三项,依此类推多重列表的比较可以转化为元组比较,在leetcode常用到# 先按第一个元素升序比较,再按第二个元素降序比较arr = [[1, 2], .原创 2021-11-02 00:02:23 · 683 阅读 · 0 评论 -
windows清理脚本
闲来无事,试着用python重写之前的cmd脚本,清理下系统# 清理系统垃圾import globimport osimport winregdef remove_files(rootdir, ext): ''' 清理rootdir目录下的符合的文件 ''' for i in glob.glob(os.path.join(rootdir, ext)): try: os.remove(i) except Ex原创 2021-10-26 09:28:42 · 980 阅读 · 2 评论 -
python日志配置demo
python日志配置demo日志类# -*- coding: utf-8 -*-import osimport sysimport threadingimport loggingimport logging.configCONFIG_FILE = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'log.config')class LogConfig(object): """日志配置类 """原创 2021-10-21 12:59:37 · 251 阅读 · 1 评论 -
python中for else慎用
for后面的else只有在执行循环体中执行break的情况下才不执行,否则不管正常循环,空循环,continue等都会执行# demo1out = []for people in ["孙悟空", "唐三藏", "猪八戒"]: out.append(people)else: out.append("over")print(",".join(out))# 孙悟空,唐三藏,猪八戒,over# demo2out = []for people in ["孙悟空", "唐三藏",原创 2021-10-12 09:13:14 · 163 阅读 · 0 评论 -
BeautifulSoup解析l缺少闭合标签的html时,html.parser和lxml区别
BeautifulSoup解析缺少闭合标签的html时,html.parser丢失数据只解析了第一条,lxml补全后没有丢失数据from bs4 import BeautifulSoupraw = """ <html> <head> <title> test </title> </head> <body> <table原创 2021-10-12 09:10:40 · 640 阅读 · 0 评论 -
json序列化TypeError Circular reference异常处理
json序列化常见异常处理json序列化异常TypeError: Object of type xxx is not JSON serializablejson序列化时,只支持基本类型,bool,None,数值,字符串,tuple,dict,不支持类实例对象json定义没有对象类型book = { "1": True, "2": None, "3": "A", "4": tuple(), "5": tuple([1, 2]), "6": dict(原创 2021-08-19 19:09:23 · 1191 阅读 · 0 评论 -
全角半角转换
https://www.jianshu.com/p/152e081fec1b全角与半角转换在处理汉语语料中会经常出现,这里分别说明汉字、数字、字母的unicode编码范围汉字编码范围汉字的unicode编码范围u4e00到u9fa5(19968到40869)根据test_is_chinese结果上面范围不包括所谓的中文符号汉字没有半角全角之分,都站两个字节,都是全角def is_chinese(uchar): """判断一个unicode是否是汉字 """ i.转载 2021-07-30 18:39:22 · 825 阅读 · 1 评论 -
python魔术方法
魔术方法https://docs.python.org/zh-cn/3/reference/datamodel.htmlhttps://docs.python.org/3/reference/datamodel.html基本定制__doc__类或函数文档字符串,没有则为None,不会被子类继承__name__类名或函数名__module__类或函数所属模块名称,没有则为None__defaults__ 函数具有默认值的参数的默认参数值组成的元组,如无任何参数具有默认值则为N原创 2021-06-09 18:47:08 · 72 阅读 · 0 评论 -
scrapy源码解析 cmdline命令流程 setting配置解析
scrapy源码解析 cmdline命令流程 setting配置解析https://docs.scrapy.org/en/latest/intro/tutorial.html项目结构scrapy.cfg部署配置文件settings.py项目设置文件items.py采集项定义文件pipelines.py采集管道文件middlewares.py中间件文件spiders/爬虫器目录源码结构随着scrapy系列文章,会逐渐补充scrapy.cmdline 命令入口scrapy.原创 2021-06-08 23:35:36 · 207 阅读 · 0 评论 -
Windows本地资源交互
os模块负责程序与操作系统的交互,提供了访问操作系统底层的接口sys模块负责程序与python解释器的交互,提供了一系列的函数和变量,用于操控python的运行时环境运行信息系统平台sys.platform解释器版本信息sys.version sys.version_info当前Unicode实现所使用的默认字符串编码名称sys.getdefaultencoding()命令行传递参数sys.argvsys.getrefcount()对象引用计数,返回的计数通常比预期的多一,因为它包括了作.原创 2021-06-02 12:37:49 · 125 阅读 · 0 评论 -
werkzeug源码解析 Request Response
werkzeug源码解析 Request Responsedatastructuresdatastructures.py单元定义了基本类型为了实现不可修改,定义了一系列Immutable类,通过覆盖默认的魔术方法(__delitem__,__setitem__等)使修改时抛异常Request继承关系werkzeug.wrappers.request.Request–>werkzeug.sansio.request.Requestwerkzeug.sansio.request.Req原创 2021-06-02 09:46:35 · 250 阅读 · 0 评论 -
WSGI简介
https://www.python.org/dev/peps/pep-0333/https://www.python.org/dev/peps/pep-3333/WSGI服务器网关接口(Python Web Server Gateway Interface)是Python应用程序或框架和Web服务器之间的一种接口协议,类似于Java中的servlet API,让服务器和业务分离解耦WSGI接口有两个方面:服务器网关端,应用程序框架端。服务器端调用由应用程序端提供的可调用对象。提供该对象的具体方.原创 2021-05-28 14:40:46 · 131 阅读 · 0 评论 -
CGI 技术简介
CGI请求流程CGI是指WEB server 与 WEB 应用程序之间的通用接口标准, 即: Common Gateway Interface前端通过表单可以向服务器发送一个URL服务器获取到很多参数(get或post请求的参数、服务器和客服端的信息,cookie等等)服务器开启CGI模块将参数存到环境变量中,并调用一个CGI程序CGI程序从环境变量中解析出这样请求的具体参数,向标准输出输出内容,发送到了你的浏览器浏览器收到http请求,解析html代码,然后渲染出了网页CGI请求缺点原创 2021-05-19 00:03:52 · 2182 阅读 · 0 评论 -
websocket建立连接
websocket建立连接客户端消息格式“ws:” “//” host [ “:” port ] path [ “?” query ] 默认 port 端口 80“wss:” “//” host [ “:” port ] path [ “?” query ] 默认 port 端口 443客户端提供信息(放在http或https头headers里面)host 与 port:主机名与端口shema:是否基于 SSL访问资源:URI握手随机数:Sec-WebSocket-Key选择子协议:原创 2021-05-16 23:33:00 · 592 阅读 · 0 评论 -
python http源码分析
http源码分析服务管理HTTPServer继承socketserver.TCPServer,建立实例后serve_forever监听客户端请求请求头校验http请求完整请求HTTP-message = start-line *( header-field CRLF ) CRLF [ message-body ]http请求头行格式request-start-line = method SP request-target SP HTTP-version CRLF(SP空格 CRLF \r\n原创 2021-05-01 00:37:56 · 219 阅读 · 2 评论 -
python socketserver源码分析
socketserver源码分析socketserver用于建立服务端,讨论TCPServer,一步步简化代码,分析源码建立连接__init__,server_bind,server_activate对应打开套接字,绑定ip和port,监听端口关闭连接handle_request处理一段请求请求后,关闭连接serve_forever启动监听,采用多路复用提高吞吐量,shutdown用来关闭连接;serve_forever阻断当前线程,监听selector,shutdown必须在另一个线程设原创 2021-04-29 00:46:31 · 184 阅读 · 0 评论 -
python socket编程
socket编程socket比较底层,在网络通信中属于网络层(IP/TCP协议)套接字ip:port标识会话双方Unix一切皆文件,打开套接字类似打开文件服务端打开套接字,指定协议簇(相当约定使用哪种语言)绑定ip和port,指定身份准备监听port端口接受来自port端口的连接请求(阻断)在连接上接受发送数据import socketfrom concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor原创 2021-04-17 22:01:59 · 65 阅读 · 0 评论 -
python命令行解析
sys.argv变量sys.argv类型List[str],就是普通的列表,sys.argv[0]运行的脚本因为每个参数都是str,不能直接解析参数(例如–time=0)每个参数用空白字符分割,参数包含空白符的用单引号或双引号分开# 测试脚本import sysif __name__ == "__main__": print(sys.argv) #命令 python test.py --timeout=0 on=true -p 80 'wait false' "sa原创 2021-04-15 00:53:46 · 536 阅读 · 0 评论