时间模块
import time
time.time() #现在的时间戳时间
time.localtime() #现在(北京)机构化时间
格式化时间--time.strptime(ret,"%Y-%m-%d %H:%M:%S")-->结构化时间--time.mktime(ret)-->时间戳时间
时间戳时间--time.localtime(ret)(北京)/time.gmtime(ret)(0时区)-->结构化时间--time.strftime("%Y-%m-%d %H:%M:%S",ret)-->格式化时间
random模块
import random
随机小数
random.random() #取0-1之间的小数 没有参数
random.uniform(n,m) #取n-m之间的小数
随机整数
random.randint(n,m) #取n-m之间的整数(包括n,m)
random.randrange(n,m,k) #取n-m之间的整数 k为步长 (不包括m)
随机抽取
l = [1,2,'abc',{'k':'v'},(1,2,3)]
random.choice(l) #在列表中随机抽取
random.sample(l) #在列表中不放回随机抽取
打乱顺序
l = [1,2,'abc',{'k':'v'},(1,2,3)]
random.shuffle(l) #打乱列表的顺序
os模块
文件和文件夹的操作
路径的操作
执行系统命令
工作目录
import os
print(__file__) #打印当前文件的绝对路径
os.listdir() #查询一个路径下所有的文件和文件夹
os.makedirs() #创建一个多级目录(递归)文件
os.removedirs() #删除一个多级目录文件(递归)(最下级文件只要为空就删除)
os.mkdir() #创建一个单级文件夹
os.rmdir() #删除一个单级文件夹
os.remove() #删除文件
os.rename() #更改文件名
os.stat() #查看当前文件的信息
os.system() #运行shell命令,直接显示
os.popen() #运行shell命令,获取执行结果
os.getcwd() #获取当前工作目录,即当前python脚本工作的目录路径
os.chdir() #改变当前脚本工作目录,相当于shell下cd
os.path.abspath() #获取当前文件规范的绝对路径
os.path.split() #对文件的路径进行切割,第一项得到的是绝对路径,第二项是文件名称
os.path.dirname() #查看被切割后元组的第一个元素
os.path.basename() #查看被切割后元组的第二个元素
os.path.join() #文件路径的拼接(绝对路径+文件名称)
os.path.isfile() #判断是否是文件 是返回True
os.path.isdir() #判断是否是文件夹 是返回True
os.path.isabs() #判断是否是绝对路径 是返回True
os.path.getsize() #查看文件的大小
os.path.getatime() #查看上一次访问时间
os.path.getmtime() #查看上一次修改时间
os.path.exists() #判断该路径path是否存在
sys 模块
import sys
sys.exit() #退出程序 参数 0 正常退出 1 异常退出
sys.path() #一个模块能不能被找到,主要是看这个模块文件所在的路径在不在sys.psth中
sys.argv() #一个文件在命令行被执行时python这句话后面的所有内容都会成为sys.argv中的一项
eg
user = sys.argv[1]
passwd = sys.argv[2]
if user == 'alex' and passwd == '123':
print('登陆成功')
else:
exit()
print('登陆成功之后才能执行的逻辑')
sys.platform() #查看当前的操作系统
sys.version() #查看当前python版本
正则表达式
字符组
\w #数字,字母,下划线(word)
\W #除了数字,字母,下划线
\s #空格 tab 回车
\S #除了空格 tab 回车
\b #单词两边界
\B #除了单词两边界
\d #数字
\D #除了数字
\n #回车
\t #tab
^ #匹配字符串的开始
$ #匹配字符串的结尾
. #除了换行符之外的所有
| #或 从左到右一次匹配
[....] #字符组
() #分组
[^...] #除了字符串都可以匹配
# 量词
{n} #重复n次
{n,} #重复至少n次
{n,m} #重复n-m次
? #匹配0次或者1次
+ #匹配一次或者多次
* #匹配0次或者多次
元字符+量词 #默认贪婪匹配
元字符+量词+? #惰性匹配
(?:正则表达式) #取消分组的优先显示
re模块
import re
re.findall('正则表达式','待匹配的字符串') #返回一个列表, 优先显示分组中匹配的内容
re.search('正则表达式','待匹配的字符串') #从左到右找到第一个匹配结果就返回 未匹配到返回None
#ret.group() #返回匹配的内容
re.match('正则表达式','待匹配的字符串') #默认在正则表达式之前加一个^ 未匹配到返回None
#ret.group() #返回匹配的内容
re.split('正则表达式','待匹配的字符串') #根据正则表达式切割
re.sub('正则表达式','|','待匹配的字符串') #用|根据正则表达式替换
re.subn('正则表达式','|','待匹配的字符串') #用|根据正则表达式替换 并返回被替换了几次
re.compile('正则表达式') #同一个正则表达式被执行很多次应先编译 效率更高 节省时间 (爬虫)
ret = re.finditer('正则表达式','待匹配的字符串') #节省空间
for i in ret:
print(i.group)
序列化模块
json模块
import json
ret = json.loads() #字符串---->其他数据类型
ret = json.dumps() #其他数据类型---->字符串
1、存储在硬盘上,写得每一个字符串必须是字符串/bytes数据类型
2、网络传输时只能传递bytes/字符串
json优缺点
优点:所有语言都通用
缺点:能支持的数据类型,dict list str 数字(不支持集合/元组被当成列表处理/字典的key只能是字符串)
ret = json.dump()
ret = json.load()
缺点:可以写多个,但是无法读出
pickle模块
import pickle
pickle优缺点:
优点:支持python中几乎所有的数据类型
缺点:只支持在python程序之间交换数据
num = {}
ret = pickle.dumps(num)
dic = pickle.loads(ret)
ret = pickle.dump('数据类型','文件句柄')
ret = pickle.load('文件句柄')
可以多次dump,多次load