Python 3 常用模块

一、time和datetime模块

1、time模块

 

import time
print(time.time())  # 从1970年到当前时间的秒数
print(time.ctime())  # 传入秒数,默认是time.time(),显示参数时间的固定可读形式如:Mon Jun 17 21:39:54 2019
print(time.clock())  # 可以计算运行程序代码的cpu时间
time.sleep(0)  # 让程序暂停
print(time.localtime())  #返回一个当前时区的时间元组
print(time.gmtime())  # 返回一个世界标准时间的时间元组
print(time.mktime(time.localtime()))  #将时间元组转化成时间戳
print(time.strftime("%Y-%m-%d %H-%M-%S", time.localtime()))  # 格式化时间

问题:在统计程序运行时间时,time.time()和time.clock()的区别?

2、datetime模块

import datetime
print(datetime.datetime.today())  # 当前的日期和时间
print(datetime.datetime.now())  # 同上
print(datetime.date.today())  # 今天的日期

# 对时期加减
today = datetime.date.today()
one_day = datetime.timedelta(days=1)
yesterday = today - one_day

 

二、random模块

import random
random.random()  # 从0-1的随机小数
random.uniform(m,n)  # 从m-n的随机小数
random.randint(m,n)  #从m-n的随机整数,包括m和n
random.randrange(m,n,s)  # 从m-n指定步长

random.shuffle(l)  # 打乱一个列表
random.choice(l)  # 从一个序列随机选择一个数
random.sample(l)  # 随机选取指定个数

 

三、sys,os模块

1、os模块,与操作系统相关

import os
os.mkdir(xx)
os.makedirs(xx/xx/xx)
os.rmdir(xx)
os.removedirs(xx/xx/xx)

os.path.join(xx,xx)
os.path.listdir(xx)  # 返回路径下所有文件名
os.path.getsize(xx)  # 返回文件大小

os.path.isfile(xx)
ps.path.isdir(xx)
ps.path.exists(xx)

2、sys模块,与python解释器有关

import sys
sys.args  # 返回在命令行启动python时传递的参数
sys.path  # 返回模块搜索路径的字符串列表,import模块时会在这些路径中寻找

 

四、pickle和json

import pickle
pickle.dumps("xxx")  # 将数据转换成字节
pickle.loads(xx)  # 将字节转化成python数据
pickle.dump("xx", open("xx", "wb"))  # 将数据以字节形式写进文件
pickle.load(open("xx", "rb"))  # 将数据从文件读出来

import json
json.dumps("xxx")  # 将数据转换成json字符串
json.loads(xx)  # 将json字符串转化成python数据
json.dump("xx", open("xx", "w"))  # 将数据以json字符串格式写进文件
json.load(open("xx", "r"))  # 将数据从文件读出来

 

五、hashlib模块

hashlib采用摘要算法进行加密,对同样的内容,加密结果永远不变,对不同的内容永远不一样。

hashlib不能解密。

应用场景:密码的密文存储、文件的一致性验证

import hashlib
md = hashlib.md5(b'xx')  # 可以加盐,防止撞库
md.update(b'xxxxx')  # 必须是bytes类型
print(md.hexdigest())

但是这样的加密可能会被撞库破解,所以为了加强密码的安全性,可以为其加盐

在md = hashlib.md(b'salt'),这样加盐,盐也必须是一个bytes类型。

 

六、re模块

模式描述
^ 匹配字符串的开头
$ 匹配字符串的末尾。
. 匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符。
[...] 用来表示一组字符,单独列出:[amk] 匹配 'a','m'或'k'
[^...] 不在[]中的字符:[^abc] 匹配除了a,b,c之外的字符。
* 匹配0个或多个的表达式。
+ 匹配1个或多个的表达式。
? 匹配0个或1个由前面的正则表达式定义的片段,非贪婪方式
{ n} 精确匹配 n 个前面表达式。例如, o{2} 不能匹配 "Bob" 中的 "o",但是能匹配 "food" 中的两个 o。
{ n,} 匹配 n 个前面表达式。例如, o{2,} 不能匹配"Bob"中的"o",但能匹配 "foooood"中的所有 o。"o{1,}" 等价于 "o+"。"o{0,}" 则等价于 "o*"。
{ n, m} 匹配 n 到 m 次由前面的正则表达式定义的片段,贪婪方式
a| b 匹配a或b
(re) 匹配括号内的表达式,也表示一个组
   
\w 匹配字母数字及下划线
\W 匹配非字母数字及下划线
\s 匹配任意空白字符,等价于 [\t\n\r\f].
\S 匹配任意非空字符
\d 匹配任意数字,等价于 [0-9].
\D 匹配任意非数字
   
\n, \t, 等. 匹配一个换行符。匹配一个制表符。等
   

1、正则表达式

括号相关:[ ],[^... ],( ),{ }

元字符:\d,\w,\s,\D,\W,\S,|,.,^$

量词:?+*

2、re模块用法

import re
re.findall(pattern,string)  # 匹配所有符合的结果,返回一个列表
re.finditer(pattern, string)  # 返回一个迭代器,保存所有符合的结果
re.search(pattern, string)  # 全文匹配,返回一个对象,只匹配第一个符合的结果
re.match(pattern, string)  # 匹配开头是否符合结果,返回一个对象,只包含一个结果
xx.group()  # 上面三个方法返回的对象都可以通过.group()来获取值,如果没有匹配到会报错

re.split(pattern, string)  # 用法和字符串的split一致,返回一个列表
re.sup(pattern, new, string)  # 用法和字符串的replace一致,返回新的字符串
re.supn(pattern, new, string)  # 返回一个元祖,保存新的字符串,和替换成功的次数

re.complie('xxxx')  # 保存着一段正则规则,可以重复使用,减少字符串转化成正则表达式的次数

3、贪婪匹配和惰性匹配

正则表达式中匹配机制默认是贪婪匹配,会尽量多的匹配。如果想使用惰性匹配,可以在量词后面加一个?,如*?,+?,??

4、分组相关

当findall的匹配规则涉及到分组时,会优先匹配分组里的结果,而不是匹配符合整个正则表达式的结果。如果不需要优先匹配分组,可以在分组中使用(?:xxx)取消优先。

search(n)可以传递一个参数n,返回第n个分组匹配到的结果。

split(xxx)如果涉及到分组,会把分组中的内容也保存下来。

分组命名,与django中路由匹配的一样,(?P<xxx>\d+)(?P=xxx),如果想匹配的两个部分是一样的,可以使用这个,比如匹配html标签

 

七、math模块

1.math.gcd(x,y):返回x和y的最大公约数

 

八、itertools模块

1.itertools.groupby(list, func):将序列里的数据,根据func的规则分组

2.itertools.product(A,B,C...):返回参数里每个元素的笛卡尔积数组组成的列表。

 

九、functools模块

1.functools.wraps:用来给装饰器函数加上,保持原函数的函数信息

2.functools.lru_cacache:用来给函数加上的装饰器,传入该函数的参数和结果会做一个缓存,同样的参数直接返回结果,但是只会缓存不可变类型的参数结果。

 

十、collections模块

1.defaultdict:当键不存在时返回什么

2.namedtuple:具名元祖

3.deque:双端队列

4.Counter:返回一个字典,键为参数序列中出现的元素,值为各个元素出现的次数

5。OrderDict:有序字典

posted @ 2019-05-11 00:32  不可思议的猪  阅读(428)  评论(0编辑  收藏  举报