day18

it2022-05-09  31

今日所学:

json语言

json语言,就是一种有语法规范的字符串,用来存放数据的,完成各种语言之间的数据交互

 1.就是{}与[]的组合,{}存放双列信息(类比为字典),[]存放单列信息(类比为列表) 2.{}的key必须是字符串,且必须用""包裹3.{}与[]中支持的值的类型: dict | list | int | float | bool | null | str

 序列化:将对象转换为字符串dumps:将对象直接序列化成字符串 dump:将对象序列化成字符串存储到文件中obj = {'name': 'Owen', "age": 18, 'height': 180, "gender": "男"}r1 = json.dumps(obj, ensure_ascii=False) # 取消默认ascii编码,同该文件的编码 utf-8 py3默认,py2规定文件头print(r1)

with open('1.txt', 'w', encoding='utf-8') as wf: json.dump(obj, wf, ensure_ascii=False)

 反序列化:将字符串转换为对象json_str = '{"name": "Owen", "age": 18, "height": 180, "gender": "男"}'r2 = json.loads(json_str, encoding='utf-8') # 默认跟当前文件被解释器执行的编码走print(r2, type(r2))

with open('1.txt', 'r', encoding='utf-8') as rf: r3 = json.load(rf) print(r3, type(r3))

#递归遍历import osdef list_file(folder,suffix,ls=[]): if not os.path.exists(folder): return ls if os.path.isfile(folder): if folder.endswith(suffix): ls.append(folder) return ls for file in os.listdir(): file_path = os.path.join(folder,file) list_file(file_path,suffix) return lsfolder = r'D:\作业\prat1'suffix = 'py'ls = list_file(folder,suffix)print(ls)#def fn(v,ls=[]): ls.append(v) return lsr1 = fn(123)print(r1)r2 = fn(456,[])print(r2)r3 = fn('a')print(r3)#递归删除文件File文件中的py文件def delete_folder(folder): if not os.path.exists(folder): return False if os.path.isfile(folder): os.remove(folder) #子文件删空了 return True for file in os.listdir(folder): file_path = os.path.join(folder,file) if os.path.isfile(file_path): os.remove(file_path) else: delete_folder(file_path) # 子文件夹删空了 os.rmdir(folder) #可以删除当前文件夹folder = r'D:\作业\File'delete_folder(folder)os.removedirs('D:\作业\File\\aa') random:随机数 模块import randomfor i in range(10): print(random.randint(1,10)) #[1,10] 整数 print('>>>>') print(random.randrange(1,10)) #[1,10) 整数 print(random.uniform(1,10)) #1到10之间的小数import randomitem = [1,2,3,4,5,6]for i in range(10): print(random.choice(item)) #一次选一个,随机选择 print(random.sample(item,2)) #随机选择两个,五次,每次都是一个列表 print(random.shuffle(item))错误语法,随机打散 随机打散 random 的用法import randomitem = [1,2,3,4,5,6,7,8]random.shuffle(item)print(item) json :序列化 序列化的模块应用import json #导入json 模块json_str = '{"a":1}'obj = json.loads(json_str)print(obj,type(obj))import json #导入json 模块json_str = '{"info":1,"msg":[1,"a",true,false,null,3.14]}'obj = json.loads(json_str)print(obj,type(obj))序列化:将对象转换为字符串

序列化成字符串:json.dumps(json_obj)序列化字符串到文件中:json.dump(json_obj, write_file)

dumps:将对象直接序列化成字符串dump:将对象序列化成字符串存储在文件中obj = {"name":'0wen',"age":28,'height':180,"gender":"男"}r1 = json.dumps(obj)print(r1)案例: import jsonobj = {"name":'0wen',"age":28,'height':180,"gender":"男"} r1 = json.dumps(obj) print(r1) #结果{"name": "0wen", "age": 28, "height": 180, "gender": "\u7537"},所以默认的是ASICC码,所以要进行转化 r1 = json.dumps(obj,ensure_ascii=False) #结果为{"name": "0wen", "age": 28, "height": 180, "gender": "男"}即 utf-8,取消默认ascii编码,同该文件的编码 utf-8 py3默认,py2规定文件头 print(r1)with open('2.txt','w',encoding='utf-8') as wf: #结果为建立了一个2.txt文本文件,并且把{"name": "0wen", "age": 28, "height": 180, "gender": "男"}写入到了此文件中 json.dump(obj, wf, ensure_ascii=False)反序列化: #反序列化

反序列化成对象:json.loads(json_str)从文件读流中反序列化成对象:json.load(read_file)

案例json_str = '{"name": "0wen", "age": 28, "height": 180, "gender": "男"}'r2 = json.loads(json_str, encoding='utf-8')print(r2,type(r2)) #结果为{'name': '0wen', 'age': 28, 'height': 180, 'gender': '男'} <class 'dict'>,即原字符串 a 案列 验证码1: 用ASICC码import randomdef random_code0(num): code = "" for i in range(num): d = random.randint(65, 90) x = random.randint(97,122) n = random.randint(0,9) code += random.choice[chr(d),chr(x),str(n)] return codedef random_code1(num): code = "" for i in range(num): chose = random.randint(1,3) if chose == 1: c = chr(random.randint(65,90)) elif chose == 2: c = chr(random.randint(97, 122)) else: c = str(random.randint(0, 9)) code += c return coder1 = random_code1(18)print(r1)第三种方法def random_code2(num): ta = '1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM' code_list = random.sample(ta,num) return ''.join(code_list)r1 = random_code2(18)print(r1)

转载于:https://www.cnblogs.com/Fzhiyuan/p/10835958.html


最新回复(0)