Python复习笔记5——常用模块
一、内建模块
1.1 datetime日期时间
(1)导入模块
1 | from datetime import datetime |
仅导入import datetime
,则必须引用全名datetime.datetime
(2)获取日期时间
获取当前日期时间
1 | # 获取当前datetime now = datetime.now() |
获取指定日期时间
1 | 2015, 4, 19, 12, 20) # 用指定日期时间创建datetime dt = datetime( |
(3)日期时间加减
加减可以直接用+
和-
运算符,不过需要导入timedelta
这个类:
1 | from datetime import datetime, timedelta |
(4)时区转换
通过utcnow()
拿到当前的UTC时间,再转换为任意时区的时间:
1 | # 拿到UTC时间,并强制设置时区为UTC+0:00: |
时区转换的关键在于,拿到一个datetime
时,要获知其正确的时区,然后强制设置时区,作为基准时间。
利用带时区的datetime
,通过astimezone()
方法,可以转换到任意时区。
(5)datetime与timestamp的转换
在计算机中,时间实际上是用数字表示的。我们把1970年1月1日 00:00:00 UTC+00:00时区的时刻称为epoch time,记为0
。当前时间就是相对于epoch time的秒数,称为timestamp。
把一个datetime
类型转换为timestamp只需要简单调用timestamp()
方法:
1 | 2015, 4, 19, 12, 20) # 用指定日期时间创建datetime dt = datetime( |
要把timestamp转换为datetime
,使用datetime
提供的fromtimestamp()
方法:
1 | from datetime import datetime |
(6)datetime与str的转换
很多时候,用户输入的日期和时间是字符串,要处理日期和时间。
转换方法是通过datetime.strptime()
实现,需要一个日期和时间的格式化字符串:
1 | from datetime import datetime |
详细的指使符参考Python官方文档
要把日期格式化为字符串显示给用户,需要转换成str,转换方法是通过strftime()
实现的
1 | from datetime import datetime |
1.2 collections集合
(1)namedtuple
namedtuple
是一个函数,它用来创建一个自定义的tuple
对象,并且规定了tuple
元素的个数,并可以用属性而不是索引来引用tuple
的某个元素。
1 | from collections import namedtuple |
(2)deque
deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈(代替list存在):
1 | from collections import deque |
deque
除了实现list的append()
和pop()
外,还支持appendleft()
和popleft()
,这样就可以非常高效地往头部添加或删除元素。
(3)OrderedDict
使用dict
时,Key是无序的。在对dict
做迭代时,我们无法确定Key的顺序。如果要保持Key的顺序,可以用OrderedDict
:
1 | from collections import OrderedDict |
注意,OrderedDict
的Key会按照插入的顺序排列,不是Key本身排序:
1.3 itertools
Python的内建模块itertools
提供了非常有用的用于操作迭代对象的函数。
(1)无限迭代器
count()
会创建一个无限的迭代器,根本停不下来,只能按Ctrl+C
退出:
1 | import itertools |
cycle()
会把传入的一个序列无限重复下去,同样停不下来:
1 | import itertools |
repeat()
负责把一个元素无限重复下去,不过如果提供第二个参数就可以限定重复次数:
1 | >>> ns = itertools.repeat('A', 3) |
(2)有限迭代
takewhile()
函数根据条件判断来截取出一个有限的序列:
1 | 1) natuals = itertools.count( |
chain()
可以把一组迭代对象串联起来,形成一个更大的迭代器:
1 | for c in itertools.chain('ABC', 'XYZ'): |
groupby()
把迭代器中相邻的重复元素挑出来放在一起:
1 | for key, group in itertools.groupby('AAABBBCCAAA'): |
二、第三方模块
2.1 Pillow
Pillow就是PIL的更新版本。由于PIL仅支持到Python 2.7,加上年久失修,于是一群志愿者在PIL的基础上创建了兼容的版本,即Pillow。
Pillow官方文档:https://pillow.readthedocs.org/
(1)Pillow安装
若使用Anaconda,则Pillow已默认安装。若自己搭建的python环境,使用以下命令安装。
1 | pip install pillow |
(2)图像操作
导入Pillow
1 | from PIL import Image |
打开图像
1 | # 打开一个jpg图像文件,注意是当前路径: |
保存图像
1 | # 把缩放后的图像用jpeg格式保存: |
获得图像尺寸
1 | # 获得图像尺寸: |
缩放图像
1 | # 缩放到50%: |
模糊图像
1 | # 应用模糊滤镜: |
(3)绘图
创建图像
1 | image = Image.new('RGB', (width, height), (255, 255, 255)) |
创建font对象
1 | font = ImageFont.truetype('Arial.ttf', 36) |
创建draw对象
1 | draw = ImageDraw.Draw(image) |
填充像素
1 | draw.point((x, y)) |
输出文字
1 | draw.text((x, y), "Text", font=font) |
示例:生成验证码
1 | from PIL import Image, ImageDraw, ImageFont, ImageFilter |