zoukankan      html  css  js  c++  java
  • python之模块-序列化 random模块

    什么是模块?

    import json
    import pickle
    # 模块:py文件
    # 1,内置模块 time os random shelve re 等等
    # 2,拓展模块。 大神写的。beautifulsoup iteat
    # 3, 自定义模块。
    
    # 序列化模块。
    # 将重要的数据 变成可以传输,并且得到后能够反解出来。
    
        # json : 适用于所有语言。
        # dict list, tuple str int, float True False None
    #     +-------------------+---------------+
    #     | Python | JSON |
    #     += == == == == == == == == == += == == == == == == == +
    #     | dict | object |
    #     +-------------------+---------------+
    #     | list, tuple | array |
    #     +-------------------+---------------+
    #     | str | string |
    #     +-------------------+---------------+
    #     | int, float | number |
    #     +-------------------+---------------+
    #     | True | true |
    #     +-------------------+---------------+
    #     | False | false |
    #     +-------------------+---------------+
    #     | None | null |
    #     +-------------------+---------------+
        # pickle 只用于Python语言之间的传输,包含所有的python支持的数据类型。
        
        
        # shelve :
    # 序列化:
    dic = {'name': '二狗', 'age': 25, 'sex': ''}
    ret = str(dic).encode('utf-8')
    #
    ret1 = ret.decode('utf-8')
    print(ret1, type(ret1))
    print(type(eval(ret1)))   #不要用,不安全

    # json
    # dumps loads # 网络传输
    dic = {'name': '二狗', 'age': 25, 'sex': ''}
    ret = json.dumps(dic,ensure_ascii=False)   # 序列化过程 : 就是变成一个特殊的字符串
    respon = json.loads(ret)            # 反序列化:将序列化的特殊字符串反解成原来的类型。
    print(ret,type(ret))              #特殊的字符串""  #序列化过程
    # print(dic)                   #字典的字符串是''
    print(respon, type(respon)) #反序列化过程

    # dump load # 写入文件
    # dump load # 写入文件
    dic = {1:{'username': '二狗1', 'password': 123},
            2:{'username': '二狗2', 'password': 123},
            3:{'username': '二狗3', 'password': 123},
           }
    f = open('json_file','w')
    json.dump(dic,f)  #dump方法接收一个文件句柄,直接将字典转换成json字符串写入文件
    f.close()
    
    f = open('json_file')
    dic2 = json.load(f)  #load方法接收一个文件句柄,直接将文件中的json字符串转换成数据结构返回
    print(dic2,type(dic2))
    f.close()
    print(type(dic2),dic2)

    # pickle 只用于Python语言之间的传输,包含所有的python支持的数据类型。
    dic = {'name': '二狗', 'age': 25, 'sex': ''}
    ret = pickle.dumps(dic)  #
    respon = pickle.loads(ret)
    print(ret)
    print(respon)

    #  dump load # 写入文件  (这个不仅可以写常规的数据,还可以将对象写入)
    
    
    class A:
        name = 'alex'
        def func(self):
            print(666)
    obj = A()
    f = open('pickle_file','wb')  #写进入
    pickle.dump(obj,f)   #用pickle都是乱码
    f.close()
    
    f = open('pickle_file','rb')  #打开以读的形式
    ret = pickle.load(f)  #
    print(ret.name)
    ret.func()
    f.close()
    # 思路:假如你打游戏,每次进去的时候,你的状态都在,就自己用这种方式,能把对象dump到一个文件当中,读取出来还保有之前的信息。

    shelve

    import shelve   #用的很少
    f = shelve.open('shelve_file')
    f['key'] = {'int':10, 'float':9.5, 'string':'Sample data'}  #直接对文件句柄操作,就可以存入数据
    f.close()
    # 写完之后出来3个文件。
    import shelve
    f1 = shelve.open('shelve_file')
    existing = f1['key']  #取出数据的时候也只需要直接用key获取即可,但是如果key不存在会报错
    f1.close()
    print(existing)
    random模块:
    print(random.random())  # 随机在0~1之间的float
    print(random.uniform(1,10)) # 1 ~10 浮点型
    print(random.randint(1,10)) # 1~10 之间的整数  ***
    print(random.randrange(1,10,2)) # 大于等于1且小于10之间的奇数)
    
    print(random.choice([1, '23', [4,5]]))  # 多选择一  ***
    print(random.sample([1,'23',[4,5], 'alex'],2)) #  列表元素 任意2个组合)
    
    item = [1, 3, 5, 7, 9]
    random.shuffle(item) # 打乱次序  ***
    print(item)
    # 生成随机验证码: 大写 小写 数字 3个混合组合
    # 0~9 随机选一个
    # a~z 随机选一个
    # 两个选一个
    import random
    # print(chr(97))
    # print(chr(122))
    def code():
        codes = ''  #初始化一个字符串
        for i in range(5):
            num = str(random.randint(0, 9))   #在0-9中随机选择数字
            char1 = chr(random.randint(97, 122))  #a:97 z:122 a-z中随机选择一个小写字母
            char2 = chr(random.randint(65, 96))   #A:65 Z:96   A-Z中随机选择一个大写字母
            c1 = random.choice([num, char1, char2])  #放到一个列表中
            # print(c1)
            codes += c1  #codes = codes + c1
        return codes #返回codes结果
    print(code())  # 打印一下codes结果
    随机验证码
  • 相关阅读:
    日期时间函数的调用
    border的应用
    复合选择器(字体样式)
    样式表
    if语句
    JavaScript 简介
    表单元素
    标记及属性
    网页基础知识
    git commit 提交规范 & 规范校验
  • 原文地址:https://www.cnblogs.com/wangkaiok/p/9990715.html
Copyright © 2011-2022 走看看