Python中内置了很多常用的模块,无需额外进行安装和配置,就可以直接使用。
datetime
获取当前的日期和时间
from datetime import datetime
now = datetime.now()
print(now)
运行结果:
2020-03-30 08:10:43.490444
获取指定日期和时间
from datetime import datetime
time = datetime(2020, 3, 31, 12, 12, 12)
print(time)
运行结果:
2020-03-31 12:12:12
datetime转为timestamp
因为在计算机中,时间其实是用数字表示的,因为我们把1970年1月1日 00:00:00 UTC+00:00时区的时刻称为epoch time,记为0
(1970年以前的时间timestamp为负数)
from datetime import datetime
timestamp = datetime(2020, 11, 11, 11, 11, 11)
print(timestamp)
ts = timestamp.timestamp()
print(ts)
运行结果:
2020-11-11 11:11:11
1605064271.0
datetime与str相互转化
from datetime import datetime
time_str = datetime.strptime("2015-1-1 11:11:11", "%Y-%m-%d %H:%M:%S")
print(time_str)
print(type(time_str))
time = time_str.strftime("%Y-%m-%d %H:%M:%S")
print(time)
print(type(time))
运行结果:
2015-01-01 11:11:11
2015-01-01 11:11:11
collections
namedtuple
namedtuple
是一个函数,它用来创建一个自定义的tuple
对象,并且规定了tuple
元素的个数,并可以用属性而不是索引来引用tuple
的某个元素。
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(12, 23)
print(p)
print(p.x)
print(p.y)
运行结果:
Point(x=12, y=23)
12
23
deque
deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈:
from collections import deque
q = deque(['a', 'b', 'c'])
# 在列表最后添加一个元素
q.append('d')
# 在列表最前面添加一个元素
q.appendleft('one')
print(q)
# 弹出最后一个元素
q.pop()
# 弹出第一个元素
q.popleft()
print(q)
运行结果:
deque(['one', 'a', 'b', 'c', 'd'])
deque(['a', 'b', 'c'])
defaultdict
使用dict
时,如果引用的Key不存在,就会抛出KeyError
。如果希望key不存在时,返回一个默认值,就可以用defaultdict
:
from collections import defaultdict
dd = defaultdict(lambda: 'Error')
dd['key1'] = 'abc'
print(dd['key1'])
print(dd['key2'])
运行结果:
abc
Error
base64
Python内置的base64
可以直接进行base64的编解码:
import base64
print(base64.b64encode(b'hello'))
print(base64.b64decode(b'aGVsbG8='))
运行结果:
b'aGVsbG8='
b'hello'
由于=
用在URL、Cookie里面会造成歧义,所以,很多Base64编码后会把=
去掉:
写一个能处理去掉=
的base64解码函数:
import base64
def safe_base64_decode(s):
# 计算缺少多少个=
l = 0 if (len(s) % 4 == 0) else 4 - len(s) % 4
if l == 0:
print(base64.b64decode(s))
else:
a = ''
for i in range(int(l)):
a += '='
# 拼接缺少的=
b = (s.decode('UTF-8') + a).encode('UTF-8')
print(base64.b64decode(bytes(b)))
safe_base64_decode(b'aGVsbG8')
运行结果:
b'hello'