pyhon常用内建模块及第三方模块

datetime

>>> from datetime import datetime
>>> datetime.now()
datetime.datetime(2020, 8, 14, 17, 0, 5, 815305)
>>> datetime(2020,8,14,17,1)
datetime.datetime(2020, 8, 14, 17, 1)

1970年1月1日 00:00:00 UTC+00:00 epotch time
timestamp 时间戳、秒数计数、浮点数

>>> t=datetime.now()
>>> t.timestamp()
1597396602.755204

#timestamp转datetime
>>> t1=224243333
>>> datetime.fromtimestamp(t1)
datetime.datetime(1977, 2, 8, 17, 48, 53)

#timestamp转utcdatetie
>>> datetime.utcfromtimestamp(t1)
datetime.datetime(1977, 2, 8, 9, 48, 53)

#str转datetime
>>> cday = datetime.strptime('2015-6-1 18:19:59', '%Y-%m-%d %H:%M:%S')
>>> print(cday)
2015-06-01 18:19:59

#datetime转str
>>> datetime.now().strftime("%a, %b %d %H %M")
'Fri, Aug 14 17 31'

#通过timedelta()进行时间偏移
>>> from datetime import timedelta
>>> datetime.now()+timedelta(hours=1)
datetime.datetime(2020, 8, 14, 18, 35, 31, 930999)

#更改时区,转换时区时间
>>> datetime.now().replace(tzinfo=timezone(timedelta(hours=8)))
datetime.datetime(2020, 8, 14, 17, 49, 33, 706043, tzinfo=datetime.timezone(datetime.timedelta(seconds=28800)))

>>> datetime.now().astimezone(timezone(timedelta(hours=8)))
datetime.datetime(2020, 8, 14, 17, 53, 40, 387302, tzinfo=datetime.timezone(datetime.timedelta(seconds=28800)))
>>> datetime.now().astimezone(timezone(timedelta(hours=9)))
datetime.datetime(2020, 8, 14, 18, 54, 0, 9933, tzinfo=datetime.timezone(datetime.timedelta(seconds=32400)))

collections

namedtuple

>>> from collections import namedtuple
>>> Circle=namedtuple("circle",["x","y","r"])
>>> c=Circle(0,0,4)
>>> c
circle(x=0, y=0, r=4)
>>> isinstance(c,tuple)
True
>>> isinstance(c,Circle)
True

deque
双端队列
高效插入删除,适用于队列和栈

defaultdict
有默认值的dict

>>> from collections import defaultdict
>>> dd = defaultdict(lambda: 'N/A')
>>> dd['key1'] = 'abc'
>>> dd['key1'] # key1存在
'abc'
>>> dd['key2'] # key2不存在,返回默认值
'N/A'

ordereddict
有序字典
按照插入的顺序排序

>>> from collections import OrderedDict
>>> d = dict([('a', 1), ('b', 2), ('c', 3)])
>>> d # dict的Key是无序的
{'a': 1, 'c': 3, 'b': 2}
>>> od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
>>> od # OrderedDict的Key是有序的
OrderedDict([('a', 1), ('b', 2), ('c', 3)])

chainmap
多个dict的组合,可用于优先查找,

counter
计数器

>>> from collections import Counter
>>> c = Counter()
>>> for ch in 'programming':
...     c[ch] = c[ch] + 1
...
>>> c
Counter({'g': 2, 'm': 2, 'r': 2, 'a': 1, 'i': 1, 'o': 1, 'n': 1, 'p': 1})
>>> c.update('hello') # 也可以一次性update
>>> c
Counter({'r': 2, 'o': 2, 'g': 2, 'm': 2, 'l': 2, 'p': 1, 'a': 1, 'i': 1, 'n': 1, 'h': 1, 'e': 1})

counter更多

base64

Base64编码会把3字节的二进制数据编码为4字节的文本数据,长度增加33%,好处是编码后的文本数据可以在邮件正文、网页等直接显示。

urlsafe base64
去掉=的base64

hashlib、hmac

Python的hashlib提供了常见的摘要算法,如MD5,SHA1,
摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串。
可用于用户密码的数据库安全存储。
hmac输出的长度和原始哈希算法的长度一致。传入两个字符串key和message都是bytes类型。

itertool

count() 返回无限序列
cycle()重复序列
repeat()重复n次
chain() 组合
groupby()切割分组
应用例题

contextlib

@contextmanager
使用完毕后关闭

from contextlib import contextmanager

class Query(object):

    def __init__(self, name):
        self.name = name

    def query(self):
        print('Query info about %s...' % self.name)

@contextmanager
def create_query(name):
    print('Begin')
    q = Query(name)
    yield q
    print('End')
    
with create_query('Bob') as q:
    q.query()

某段代码执行前后自动执行特定代码

@contextmanager
def tag(name):
    print("<%s>" % name)
    yield
    print("</%s>" % name)

with tag("h1"):
    print("hello")
    print("world")

@closing

from contextlib import closing
from urllib.request import urlopen

with closing(urlopen('https://www.python.org')) as page:
    for line in page:
        print(line)

urllib

get
直接打开或者实例化一个Request对象再打开对象
post
打开的时候加入bytes数据
handler
通过proxy访问网站

xml

操作XML有两种方法:DOM和SAX。DOM会把整个XML读入内存,解析为树,因此占用内存大,解析慢,优点是可以任意遍历树的节点。SAX是流模式,边读边解析,占用内存小,解析快,缺点是我们需要自己处理事件。
优先考虑SAX

pillow

图像处理,滤镜,生成随机验证码等功能

request

urllib的替代品,更高级,接口更简单易懂,传参更方便

chardet

用于检测bytes的编码格式,方便转化为字符串

psutil

process and system utilities
获取系统相关的信息,cpu 内存 磁盘 网络等等

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值