python模块知识二 random -- 随机模块、序列化 、os模块、sys -- 系统模块
程序员文章站
2022-05-13 18:24:02
4.random 随机模块 1. a z:97 ~ 122 A Z :65 ~ 90 5.序列化 1.json 模块 两组4个方法: 1. dumps() :将对象转(序列化)成字符串 loads() :将字符串转换(反序列化)成对象 2. dump() :将对象转换(序列化)成 ......
4.random -- 随机模块
- a-z:97 ~ 122 a-z :65 ~ 90
import random #浮点数 print(random.random())#0~1,不可指定 print(random.uniform(1,10))#1~10#须指定 #整数 print(random.randint(1,10))[1~10]整数,闭区间 print(random.randrange(1,5,2))#(起始,终止,步长) list1 = [1,2,3,4,5] print(random.choice(list1)) #随机选择一个元素 print(random.choices(list1,k=2))#选择两个元素,会有重复,k可以超范围 print(random.sample(list1,k=2))#选择两个元素,k不可以超范围。不会有重复,除非只有两个[1,1] #打乱顺序 list1 = [12,3,4,5,6,7,8,9] random.shuffle(list1) print(list1)
5.序列化
1.json 模块
两组4个方法:
- dumps() :将对象转(序列化)成字符串
loads() :将字符串转换(反序列化)成对象
import json #列表 list1 = [1,22,3,3,45] str1 = json.dumps(list1)#序列化 print(str1,type(str1)) list2 = json.loads(str1)#反序列化 print(list2,type(list2)) #字典 dict1 = {"k1":"无聊","k2":2} str2 = json.dumps(dict1)#汉字会变成ascii码, str3 = json.dumps(dict1,ensure_ascii=false)#将ascii转码关闭 print(str2,type(str2)) dict2 = json.loads(str2) print(dict2,type(dict2))
-
dump() :将对象转换(序列化)成字符串,写入文件
ldad():将文件中的字符串转换(反序列化)成对象
import json list1 = [1,22,3,3,45] f = open('info','a') json.dump(list1,f)#每次只能在同一行写入 #解决:写入多行 f.writelines(json.dumps(list1) + '\n') f.close() f1 = open('info','r') l = json.load(f1)#只能读取一行,多行或一行有多个数据会报错 #解决:读取多行 for i in f1: l = json.loads(i) print(l) print(l,f1)
2.pickle 序列化
-- 近乎可将python所有对象进行转换(python自带,只有python可以用)
推荐使用json:jaon是各种语言通用的,pickle是python私有的
两组4个方法:
1.
dumps:转成类字节
loads:转回原对象
import pickle #转列表 list1 = [1,2,3,4,6] str1 = pickle.dumps(list1)#转换成类似字节 print(str1,type(str1)) list2 = pickle.loads(str1) print(list2,type(list2)) #转字典 dict1 = {'k1':'v1'} str1 = pickle.dumps(dict1) print(str1) print(pickle.loads(str1)) #转函数名 def func(): print(111) fun = pickle.dumps(func) print(fun) pickle.loads(fun)()
dump::转成类字节写入文件
load:读取文件并还原成原对象
import pickle dic = {'user':'你去'} pickle.dump(dic,open("info",'wb')) print(pickle.load(open("info",'rb'))) #写入多行,读取多行 f = open("info",'wb') s = "\n".encode("utf-8") f.write(pickle.dumps(dic) + s) f.close() f1 = open("info",'rb') for i in f1: print(pickle.loads(i))
6.os模块 -- 与操作系统交互的接口
(程序员通过python向操作系统发送指令)
共四组:
- 工作目录
import os print(os.getcwd())#获取当前工作目录 *** os.chdir("d:\\")#路径切换*** print(os.curdir)#当前 . print(os.pardir)#父级 ..
- 文件夹:***
import os os.mkdir('tt')#创建一个文件夹,不能是跨级创建 os.rmdir('tt')#删除一个空的文件夹 os.makedirs("tt/ss/dd")#递归创建文件夹 os.removedirs("tt/ss/dd")#递归删除文件夹 print(os.listdir(r"e:\python\oldboy\py\190726"))#返回目录下文件
- 文件
import os os.rename()#修改文件名*** os.remove("info")#删除文件,不能撤销*** print(os.path.getatime(r"e:\python\oldboy\py\190726\01.py"))#最后修改的时间 print(os.path.getctime(r"e:\python\oldboy\py\190726\01.py"))#最后的访问时间 print(os.path.getmtime(r"e:\python\oldboy\py\190726\01.py"))#最后的访问时间 print(os.path.getsize(r"e:\python\oldboy\py\190726\01.py"))#获取当前文件的大小,不用来判断文件夹。*** #要写一个函数实现,先判断是否为文件: #os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表 import os for i in os.listdir(“hahaha”): if os.path.isfile(i): print(os.path.getsize(“hahaha”+os.sep+i))
- 路径
import os print(os.path.abspath(r"01.py"))#通过相对路径获取绝度路径 *** print(os.path.split(os.path.abspath(r"01.py")))#将绝对路径按照最后一个'\'切割(路径,文件名)*** print(os.path.dirname(r"e:\python\oldboy\py\190726\01.py"))#通过绝对路径获取路径 *** print(os.path.basename(r"e:\python\oldboy\py\190726\01.py"))#通过路径获获取最后输入的最后一级文件名 ** print(os.path.exists(r"e:\python\oldboy\py\190726\01.py"))#判断这个路径是否存在 *** print(os.path.isdir(r"e:\python\oldboy\py\190726\01.py"))#判断是不是存在的目录 *** print(os.path.isfile(r"01.py"))#判断是不是存在的文件 *** print(os.path.isabs(r"e:\python\oldboy\py\190726\01.py"))#判断是不是绝对路径 print(os.path.join("d:\\","tt","dd"))#路径拼接 ***
7.sys -- 系统模块,与python解释器交互的接口
import sys sys.argv#命令行传参 print(sys.argv) sys.exit()#退出程序,可以修改参数,0为正常退出,1为出错 print(sys.version)#获取当前解释器版本 print(sys.path())#添加自定义模块查找路径 print(sys.platform)#区分操作系统,进行相关逻辑操作
上一篇: 宝宝稀饭怎么制作才美味又受宝宝喜爱呢?