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'
    
    
  • 相关阅读:
    LeetCode 811. Subdomain Visit Count (子域名访问计数)
    LeetCode 884. Uncommon Words from Two Sentences (两句话中的不常见单词)
    LeetCode 939. Minimum Area Rectangle (最小面积矩形)
    LeetCode 781. Rabbits in Forest (森林中的兔子)
    LeetCode 739. Daily Temperatures (每日温度)
    三种方式实现按钮的点击事件
    239. Sliding Window Maximum
    14.TCP的坚持定时器和保活定时器
    13.TCP的超时与重传
    12.TCP的成块数据流
  • 原文地址:https://www.cnblogs.com/littleb/p/11892269.html
Copyright © 2011-2022 走看看