1、序列化pickle
- 系统模块,需要时可以导入后使用
- pickle实现了对python对象的二进制序列化和反序列化。
- 序列化就是把ptyhon的数据,以文本或二进制的方式进行转换,并且还能发序列化
- JSON是文本序列化格式,pickle是二进制序列化格式
- JSON可以直观阅读,而pickle不是
pickle模块提供的函数 dumps()序列化,可以把一个python的任意对象序列化为一个二进制 loads()反序列化,把一个序列化后的二进制数据反序列化为python的对象
使用pickle需要使用import pickle
import pickle
vars='hello world!'
res=pickle.dumps(vars)
print(res,type(res))
res=pickle.loads(res)
print(res)
- dump(需要序列化的数据对象,写入的文件对象)序列化,把一个数据对象进行序列化并写入到文件中
- load()反序列化,在一个文件中读取序列化的数据,并且反序列化
传统方法
import pickle
vars={'name':'zhangsan','age':29,'gender':'female'}
res=pickle.dumps(vars)
with open('./datas.txt','wb') as fp:
fp.write(res)
with open('./datas.txt','rb') as fp:
res=fp.read()
result=pickle.loads(res)
print(result)
模块方法
import pickle
vars={'name':'zhangsan','age':29,'gender':'female'}
with open('./datas2.txt','rb') as fp:
res=pickle.load(fp)
print(res)
2、序列化json
json定义:略,主要是也说不明白,会用就行 json类似python的字典 互联网通用的数据交换,交换,定义的数据格式
import json
vars={'name':'zhangsan','age':29,'gender':'female'}
res=json.dumps(vars)
print(res,type(res))
result=json.loads(res)
print(result)
使用高级方法进行序列化
import json
varjson={"name":"zhangsan","age":29,"gender":"female"}
with open ('./data1.json','r+') as fp:
res=json.load(fp)
print(res)
3、数学模块
- #ceil()向上取整
- #floor()向下取整
- #pow()求n次方结果是浮点数
- #sqrt()开平方运算
- #fabs()计算绝对值,结果是浮点数
- #modf()把数值拆分成小数和整数组成的元组
- #copysign(x,y)把第二个参数的正负符号拷贝给第一个参数
- #fsum()讲一个容器类型数据中的元素进行一个求和运算,结果为浮点数
- #factroial(x)返回一个数的阶乘,结果为整数
- #常量pi
import math
res=math.ceil(3.254)
print(res)
res=round(3.23)
print(res)
res=math.floor(3.25)
print(res)
res=math.pow(2,4)
print(res)
res=math.sqrt(8)
print(res)
res=math.fabs(-100)
print(res)
res=math.modf(3.34)
print(res)
x=3
y=-5
res=math.copysign(x,y)
print(res)
res=math.fsum([1,2,3,4,5])
print(res)
res=math.factorial(5)
print(res)
res=math.pi
print(res)
4、随机模块-random
各种各样的随机方法 随机数应用场景,数字验证码,高并发下的订单号
- random()返回0-1之间的随机小数,左闭右开,取不到1,但可以取到0
- randrange(开始值,结束值,步进值)随机获取指定范围内的整数
- randint(开始,结束)随机整数,返回为左闭右闭
- uniform(开始,结束)获取范围内的随机小数
- choice()随机获取容器类型中的值
- shuffle()随机打乱当前列表的值,直接改变当前列表
import random
res=random.random()
print(res)
res=random.randrange(3,69,2)
print(res)
res=random.randint(3,10)
print(res)
res=random.uniform(5,10)
print(res)
res=random.choice([1,2,4,7,89,0])
print(res)
varlist=[1,2,3,4,5,6]
random.shuffle(varlist)
print(varlist)
5、OS操作系统接口模块1
提供了一些方便使用操作系统的函数
- getcwd()获取当前工作目录,python的执行目录
- chdir()修改当前的工作目录
import os
res=os.getcwd()
print(res)
os.chdir('E:\MyProject\python')
res=os.getcwd()
print(res)
6、OS操作系统接口模块2
- listdir()返回项目的文件夹及文件列表
- mkdir()创建文件夹,不能递归创建(路径中的文件夹一定要连续有,不能是不存在的目录)
- remove()删除文件
- rename(‘old’,‘new’)修改文件或文件夹的名字
- system()执行操作系统中的命令
import os
res=os.listdir()
print(res)
os.rename('hello','world')
os.system('hello.py')
7、OS.path操作系统接口模块3
- abspath()相对路径转化为绝对路径
- basename()获取路径中的主体部分,就是路径中的最后一部分
- dirname()获取路径中的路径部分,实际就是.之前的路径
- join(path1,path2)将两个路径拼接
- split()拆分路径为路径和主体部分,吧最后一部分拆开,返回了一个元祖
- splitext()拆分路径可以拆分文件后缀名
- getsize()获取文件的大小字节数
- isdir()检测是否是一个文件夹,是否存在
- isfile()检测文件是否存在
- exists()检测路径是否存在,既可以检测文件也可以检测路径
- samefile(file1,file2)检测两个路径(一个相对,一个绝对路径)是否同一个文件(指向同一个文件),这两个文件必须都真实存在
import os
res=os.path.abspath('./')
print(res)
res=os.path.basename('E:\MyProject\python\ex01')
print(res)
res=os.path.dirname('E:\MyProject\python\ex01\hello.py')
print(res)
res=os.path.join('E:\MyProject\python\ex01','hello.py')
print(res)
res=os.path.split('E:\MyProject\python\ex01\hello.py')
print(res)
res=os.path.splitext('E:\MyProject\python\ex01\hello.py')
print(res)
res=os.path.getsize('E:\MyProject\python\ex01\hello.py')
print(res)
res=os.path.isdir('E:\MyProject\python\ex01')
print(res)
res=os.path.isfile('E:\MyProject\python\ex01\hello.py')
print(res)
res=os.path.exists('E:\MyProject\python\ex01\hello.py')
print(res)
res=os.path.samefile('E:\MyProject\python\ex01\hello.py','./hello.py')
print(res)
8、shutil高层次文件操作模块
- copy(source,aim)复制文件
- copy2()和copy方法一样,可以把拷贝未见到指定目录,保留了源文件的信息(操作时间和权限等)
- copyfile()拷贝文件的内容(打开文件,读取内容,写入到新的文件中)
- copytree(source,aim)拷贝文件树
- rmtree()删除整个文件夹
- move(source,aim)移动文件或文件夹到指定目录,也可以用于修改文件夹或文件的名称
import shutil
shutil.move('./testfather','./world')
9、zip压缩模块zipfile
压缩文件 要import 一个zipfile模块 Zipfile(文件路径,压缩模式,压缩或打包),文件路径为期望压缩后的文件路径
import zipfile
with zipfile.ZipFile('./myzip','w') as zf:
zf.write('./dalta.txt')
zf.write('./datas.txt')
zf.write('./datas2.txt')
zf.write('./datas3.txt')
解压缩
with zipfile.ZipFile('./myzip','r') as zf:
zf.extractall(path='./world')
10、时间模块time
#time()获取当前系统的时间戳 #ctime()获取当前系统时间的字符串及指定时间的字串 #localtime()获取当前的系统时间的元组 #strftime()格式化时间 年-月-日 时:分:秒 星期几 #sleep(number)暂定当前线程的执行number秒
import time
res=time.time()
print(res)
res=time.ctime()
print(res)
res=time.ctime(1636781951.7837114)
print(res)
res=time.localtime()
print(res)
res=time.strftime('%Y-%m-%d %H:%M:%S %w')
print(res)
print(time.strftime('%Y-%m-%d %H:%M:%S %w'))
time.sleep(3)
print(time.strftime('%Y-%m-%d %H:%M:%S %w'))
11、日历模块
import calendar
res=calendar.monthrange(2021,5)
days=res[1]
w=res[0]+1
print(res)
|