• 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)
  • 相关阅读:
    (转)Docker network命令
    (转)Navicat连接MySQL8.0亲测有效
    (转)Docker 网络
    Docker问题方案收集
    (转)docker run的--rm选项详解
    (转)docker-compose安装
    (转)教你分分钟搞定Docker私有仓库Registry
    (转)Docker入门——Dockerfile详解
    (转)Windows下安装Docker, GitBash环境配置
    (转)教你分分钟搞定Docker私有仓库Registry
  • 原文地址:https://www.cnblogs.com/Fzhiyuan/p/10835958.html
Copyright © 2020-2023  润新知