zoukankan      html  css  js  c++  java
  • 序列化模块

    json模块

    jason模块是一个序列化模块

    ​ 是一个第三方的特殊数据格式,在json中,所有字符串都是双引号。

    python中的元组若转换成json数据,内部会将元组变为列表

    set集合不能转换成json数据

    为什么要使用json:让不同的语言之间的数据可以共享

    使用方法:

    -json.dumps()

    json.dumps() , f = open() --->f.write()

    序列化:python数据类型----->json ---->字符串----->文件中

    -json.loads()

    f = open(), str = f.read(), json.loads(str)

    反序列化:json文件中----->字符串----->json----->python或其他语言数据类型

    -json.dump():在内部实现f.write()

    -json.load():在内部实现f.read()

    dump 和 load使用更方便

    在保存json数据时,用.json作为文件后缀名

    import json
    #列表
    #json.dumps() python数据--->json数据格式--->字符串
    list1 = ['1','2','3']
    list2 = ['赵铁柱','小花']
    json_str1 = json.dumps(list1)
    #ensure_ascii将默认的ascii取消设置为False,可以在控制台看到中文,否则看到的bytes类型数据
    json_str2 = json.dumps(list2,ensure_ascii=False)
    print(json_str1) ---->["1", "2", "3"]
    print(json_str2) ---->["赵铁柱", "小花"]
    print(type(json_str1)) --->'str'
    
    #json.loads()字符串--->json数据格式 ---->python数据
    python_data = json.loads(json_str2)
    print(python_data)---->['赵铁柱', '小花']
    print(type(python_data))---->'list'
    
    
    #元组
    #序列化
    tuple1 = ('篮球','足球')
    json_str = json.dumps(tuple1,ensure_ascii=False)
    print(json_str) ---->["篮球", "足球"]
    print(type(json_str))---->'str'
    #反序列化
    python_data = json.loads(json_str)
    print(python_data)---->['篮球', '足球']
    print(type(python_data))---->'list'
    
    
    #字典
    #序列化
    dict1 = {
        'name':'qqq',
        'age':17
    }
    json_str = json.dumps(dict1,ensure_ascii=False)
    print(json_str)---->{"name": "qqq", "age": 17}
    print(type(json_str))---->'str'
    #反序列化
    python_data = json.loads(json_str)
    print(python_data)---->{'name': 'qqq', 'age': 17}
    print(type(python_data))---->'dict'
    
    
    #注册功能
    def register():
    	username = input('input your username:').strip()
        password = input('input your password:').strip()
        r_password = input('confirm password:').strip()
        if password == r_password:
            #[username,password]
            #{'name':username,'pwd':password}
            user_dict={
                'name':username,'pwd':password
            }
            json_str = json.dumps(user_dict,ensure_ascii=False)
            #将数据写入文件,保存json数据时用.json作为后缀名
            with open('user.json','w',encoding= 'utf-8')as	f:
                f.write(json_str)
    
                
    register()
    
    
    #使用json.dump()  json.load()
    import json
    def register():
        user_dict ={
            'username':'lzn',
            'password':123
        }
        # f = open('user2.json','w',encoding= 'utf-8')
        # json.dump(user_dict,f)
        # f.close
        with open('user3.json', 'w', encoding='utf-8')as f:
            json.dump(user_dict, f)
    
    register()
    
    # 读取json数据文件
    with open('user3.json', 'r', encoding='utf-8')as f:
        user_dict = json.load(f)
        print(user_dict)---->{'username': 'lzn', 'password': 123}
    	
    
    

    pickle模块

    pickle是python自带的序列化模块

    优点:可以支持python中所有数据类型,可以直接存‘bytes类型‘的数据,pickle的存取速度更快

    缺点:只能支持python使用,不能跨平台

    import pickle
    set1 = {
        'qqq','lll','nnn'
    }
    #dump
    with open('n.pickle','wb')as f:
        pickle.dump(set1,f)
    #load
    with open('n.pickle','rb')as f:
        python_data = pickle.load(f)
        print(python_data)---->{'lll', 'nnn', 'qqq'}
        print(type(python_data))---->'set'
    
    
  • 相关阅读:
    Java学习小记 5
    Java学习小记 4
    Java学习小记 3
    Java学习小记 2
    Java学习小记 1
    ThreadLocal详解
    jvm之java类加载机制和类加载器(ClassLoader)的详解
    什么情况下JVM内存中的一个对象会被垃圾回收?
    java线程池的拒绝策略
    logback配置文件---logback.xml详解
  • 原文地址:https://www.cnblogs.com/littleb/p/11892269.html
Copyright © 2011-2022 走看看