Python学习系列 - 常用内建模块(十一)

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'

你可能感兴趣的:(python3.x)