目录

内建模块

1  datetime模块(处理日期和时间的标准库)

datetime与timestamp转换

str与datetime转换

datetime时间加减,使用timedelta这个类

转换为UTC时间

时区转换

2  collectioins模块

namedtuple函数(使用属性引用tuple元素)

deque 双向列表

defaultdict(可以设置key不存在时的返回值)

OrderedDict(有序字典,迭代时按添加顺序迭代)

ChainMap

Counter(计数器,dict子类)

3 base64(用64个字符来表示任意二进制数据)

4 struct(解决bytes和其他类型的转换)

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方便,第三方库

11 chardet,检测编码

12 psutil,监控系统运行状态

13 virtualenv 创建一套隔离的运行环境


内建模块

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

Python常用内建模块和第三方库的更多相关文章

  1. Python常用内建模块

    Python常用内建模块 datetime 处理日期和时间的标准库. 注意到datetime是模块,datetime模块还包含一个datetime类,通过from datetime import da ...

  2. python常用内建模块 collections,bs64,struct,hashlib,itertools,contextlib,xml

    #  2  collections 是Python内建的一个集合模块,提供了许多有用的集合类. # 2.1 namedtuple #tuple可以表示不变集合,例如,一个点的二维坐标就可以表示成: p ...

  3. collections(python常用内建模块)

    文章来源:https://www.liaoxuefeng.com/wiki/897692888725344/973805065315456 collections collections是Python ...

  4. python常用内建模块——datetime

    datetime是python处理日期和时间的标准库. 获取当前日期和时间 >>>from datetime import datetime >>>now = da ...

  5. Python 常用内建模块(time ,datetime)

    1,在Python中,与时间处理有关的模块就包括:time,datetime以及calendar. 2,在Python中,通常有这几种方式来表示时间:1)时间戳 2)格式化的时间字符串 3)元组(st ...

  6. Python 常用内建模块(os, sys,random)

    一.os 模块 1,操作系统与环境变量 import osprint(os.name) #操作系统类型,如果是posix 说明系统是linux unix 或 mac os x :如果是nt 就是win ...

  7. python常用内建模块--datetime

    datetime模块中的datetime类: 获取当前时间:datetime.now() 当前操作系统时区时间,date.utctime(UTC时间) 转换成时间戳:timestamp() 和具体时区 ...

  8. python 常用内建模块(3) base64

    Base64是一种用64个字符来表示任意二进制数据的方法. 用记事本打开exe.jpg.pdf这些文件时,我们都会看到一大堆乱码,因为二进制文件包含很多无法显示和打印的字符,所以,如果要让记事本这样的 ...

  9. python常用内建模块--base64

    Base64是一种任意二进制到文本字符串的编码方法,常用于在URL.Cookie.网页中传输少量二进制数据. import base64 a = 'abcdef/+'b= base64.b64enco ...

随机推荐

  1. SSM项目使用拦截器实现登录验证功能

    SSM项目使用拦截器实现登录验证功能 登录接口实现 public User queryUser(String UserName, String Password,HttpServletRequest ...

  2. gin框架中的路由

    基本路由 gin框架中采用的路由库是基于httrouter做的 地址为:https://github.com/julienschmidt/httprouter httprouter路由库 点击查看代码 ...

  3. IoC容器-Bean管理(bean作用域)

    IoC操作Bean管理(bean作用域) 1,在Spring里面,设置创建bean实例是单实例还是多实例 2,在Spring里面,默认情况下,bean是单实例对象 3,如何设置单实例还是多实例 (1) ...

  4. 1. flink 基础

    flink word count  程序 1. 数据集模式 pom.xml 文件 <?xml version="1.0" encoding="UTF-8" ...

  5. vector概述

    vector是一个能够支持任何类型的容器,本身为一个可以动态增长的数组. 1.vector基本数据结构 STL中所有的容器都包括三部分: 迭代器,遍历容器的元素,控制容器空间的边界和元素移动. 构造函 ...

  6. 如何在pyqt中实现亚克力磨砂效果的QLabel

    前言 Windows10 在 UWP 应用中支持亚克力画刷,可以在部件的底部绘制亚克力效果的背景图.下面我们使用 QLabel 来模拟这个磨砂过程. 实现方法 MSDN 文档中介绍了亚克力材料的配方, ...

  7. .NET 20周年软件趋势随想

    从2000年微软启动.NET战略时,我还是一位大学生,当年著名的黑客Miguel de Icaza , Miguel 为了寻找GNOME项目开发框架经过充分的调研启动了一个志存高远的项目:Mono,一 ...

  8. ApacheCN 计算机视觉译文集 20210212 更新

    新增了六个教程: OpenCV 图像处理学习手册 零.前言 一.处理图像和视频文件 二.建立图像处理工具 三.校正和增强图像 四.处理色彩 五.视频图像处理 六.计算摄影 七.加速图像处理 Pytho ...

  9. 「NOI十联测」反函数

    30pts 令(为1,)为-1: 暴力枚举每个点为起始点的路径,一条路径是合法的当且仅当路径权值和为0且路径上没有出现过负数. 将所有答案算出. 100pts 使用点分治. 要求知道经过重心root的 ...

  10. Atcoder ARC-058

    ARC058(2020.7.4) A 从高到低依次填入能填的最小值即可. B 首先可以发现这个区间实际上只有横着的一条边有用,那么我们可以在边界上枚举中转点使得不经过非法区域即可. C 挺神的一道题. ...