day18

今日所学:

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 os
def 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 ls
folder = r'D:作业prat1'
suffix = 'py'
ls = list_file(folder,suffix)
print(ls)
#
def fn(v,ls=[]):
ls.append(v)
return ls
r1 = 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 random
for 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 random
item = [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 random
item = [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 json
obj = {"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 random
def 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 code

def 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 code
r1 = 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