Python常用内建模块和第三方库
目录
5 hashlib,Hmac(提供常见的摘要算法,MD5, SHA1等。Hmac混入key)
6 itertools (提供了非常有用的用于操作迭代对象的函数)
7 contextlib(上下文管理,使使用了上下文管理的函数都可以使用with)
8 urllib,利用程序执行各种http请求,XML、HTMLParser
9 pillow,图像处理, https://pillow.readthedocs.org/
10 requests, 处理url,比urllib方便,第三方库
内建模块
1 datetime模块(处理日期和时间的标准库)
datetime与timestamp转换
datetime是模块,datetime模块还包含有一个datetime类
from datetime import datetime # 获取当前日期和时间 now = datetime.now() # 获取当前的datetime print(now) # 获取指定日期和时间 dt = datetime(2015, 4, 19, 12, 20) # 用指定日期和时间创建一个datetime对象 print(dt) # 将datetime转换为timestamp dt_ts = dt.timestamp() # 调用datetime的timestamp()方法 print(dt_ts) # 将timestamp转换为datetime dt2 = datetime.fromtimestamp(dt_ts) # 调用datetime的fromtimestamp()方法传入timestamp参数,转换到了本机时间 dt3 = datetime.utcfromtimestamp(dt_ts) # 转换到utc时间
str与datetime转换
from datetime import datetime # str转datetime cday = datetime.strptime('2019-10-1 19:45:59', '%Y-%m-%d %H:%M:%S') # 转换后是没有时区信息的 print(cday) # datetime转str cday_str = cday.strftime(%a %b %d %H:%M:%S) print(cday_str)
日期和时间字符串格式:https://docs.python.org/3/library/datetime.html#strftime-strptime-behavior
datetime时间加减,使用timedelta这个类
from datetime import datetime, timedelta now = datetime.now() now_plus_10days = now + timedelta(days=10)
转换为UTC时间
一个datetime时间有一个时区属性tzinfo,默认为None,所以无法区分是哪个时区,除非强制给datetime设置一个时区
from datetime import datetime, timedalta, timezone tz_utc_8 = timezone(timedelta(hours=8)) # 创建时区UTC+8 now = datetime.now() # 本地时间,tzinfo默认为None print(now) local_time = now.replace(tzinfo=tz_utc_8) # 强制设置时区为UTC+8 print(local_time)
时区转换
可以通过utcnow()拿到UTC时间,然后设置时区tzinfo=timezone.utc作为基准时间,再使用astimezone传入时区参数获得时区时间
from datetime import datetime, timezone, timedelta utc_dt = datetime.utcnow().replace(tzinfo=timezone.utc) # 拿到utc时间并设置时区 bj_dt = utc_dt.astimezone(timezone(timedelta(hours=8))) # 传入时区参数获得时区时间
时区转换的关键在于,拿到一个时区的datetime,强制设置时区获得基准时间,然后利用带时区的datetime,通过astimeone()方法转换到任意时区
2 collectioins模块
collections是python内建的一个集合模块,提供了许多有用的集合类
namedtuple函数(使用属性引用tuple元素)
namedtuple函数用来创建一个自定义的对象,并且规定了tuple的元素的个数,并且可以用属性而不是索引来引用某个元素。
这样我们可以很方便的定义一种数据类型,它具备tuple的不变性,又可以通过属性来引用,使用十分方便
from collections import namedtuple Point = namedtuple('Point', ['x', 'y']) # 创建一个类 p = Point(1, 2) # 创建实例 print('Point type:', type(Point)) print(p)
deque 双向列表
为了实现高效插入和删除的双向列表,除普通的list方法外,还有popleft()和appendleft()删除和添加头元素
defaultdict(可以设置key不存在时的返回值)
from collections import defaultdict dd = defaultdict(lambda: 'N/A') print(dd['a']) # 返回'N/A'而不是报错,其他和dict一样
OrderedDict(有序字典,迭代时按添加顺序迭代)
可以实现一个先进先出的dict,当容量超出限制时,先删除最早的key
ChainMap
ChainMap可以把一组dict串起来,形成逻辑上的dict,ChainMap本身也是一个dict,但是在查找的时候会按顺序在内部的dict依次查找。应用:通过命令行、环境变量和默认参数传参数时用ChainMap实现参数的优先级查找
Counter(计数器,dict子类)
例如统计字符个数
from collections import Counter c1 = Counter() for ch in 'Programming': c1[ch] += 1 print(c1)
3 base64(用64个字符来表示任意二进制数据)
base是一种用64个字符来表示任意二进制的方法,3个字节一组,共24位,再分成4组,每组6位,根据这6位查找64字符表对应的字符。['A', 'B', ... 'a', 'b', ... '0', '1', ... '+', '/'],长度增加33%。
不够3个字节的用\x00补,再在编码的末尾加1或2个等号表示补了多少字节,解码时自动去掉
import base64 b = base64.b64encode(b'binary string') # 把二进制字节类型的数据根据64字符表进行编码 eb = base64.b64decode(b) # 将编码后的二进制数据进行解码 b = urlsafe_b64encode(b'binary string') # urlsafe的编码 由于+和/在url中不能直接出现 其实是换成了-和_ eb = urlsafe_b64decode(b) # urlsafe解码
由于=也有可能出现在b64编码中,但等号在url,cookies里面会造成歧义,所以很多base64编码会把=去掉
import base64 # 能够处理编码后去掉等号的 def safe_base64_decode(s): x = len(s) % 4 if not x: return base64.b64decode(s) else: s = s.decode(encoding='utf-8') + '=' * x s = bytes(s, encoding='utf-8') return base64.b64decode(s)
4 struct(解决bytes和其他类型的转换)
https://docs.python.org/3/library/struct.html#format-characters
5 hashlib,Hmac(提供常见的摘要算法,MD5, SHA1等。Hmac混入key)
6 itertools (提供了非常有用的用于操作迭代对象的函数)
itertools.count(), 创建一个无限迭代器,打印出自然数序列
cycle(), 把传入的序列无限重复下去,
repeat(), 把一个元素无限重复下去,传入第二个参数可以限定重复次数
takewhile(condition, seq), 根据条件截取一个有限序列
提供的迭代器
chain(), 把一个迭代对象串起来,形成一个更大的迭代器
groupby(), 把迭代器中相邻的重复元素挑出来放一起,也可以通过函数设置挑选规则
7 contextlib(上下文管理,使使用了上下文管理的函数都可以使用with)
8 urllib,利用程序执行各种http请求,XML、HTMLParser
第三方模块
9 pillow,图像处理, https://pillow.readthedocs.org/
10 requests, 处理url,比urllib方便,第三方库
11 chardet,检测编码
12 psutil,监控系统运行状态
获取CPU信息、内存信息、磁盘信息、网络信息、进程信息
13 virtualenv 创建一套隔离的运行环境
- -- 创建目录,并进入到目录下
- -- 创建一个独立的python运行环境,命名为venv,使用命令:virtualenv --no-site-packages venv
参数 --no-site-packages 使已经安装到系统python环境中的所有第三方包都不会复制过来,得到一个干净的运行环境
- -- 进入环境,使用命令:source venv/bin/activate
注意到提示符变了,表示当前环境是一个名为venv的python环境,在这个环境下使用pip安装的包都被安装到venv环境下,系统python不受影响。
- -- 退出环境,使用命令:deactivate
本文来自博客园,作者:Bingmous,转载请注明原文链接:https://www.cnblogs.com/bingmous/p/15643749.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?