zoukankan      html  css  js  c++  java
  • json&pickle数据序列化模块

    用于序列化的模块

    • json,通用的序列化方式,序列化成为str类型,支持所有语言识别,序列化的数据具有局限性。
    • pickle,python的所有数据类型都可以被序列化,序列化为bites格式,只适用于python之间的数据交互。

    json和pickle都支持四个功能:load,loads,dump,dumps.

    可以根据下面的代码来看四个功能到底如何实现:

    # Author:Zhang Zhao
    #json序列化实现
    import json
    data = {'name':'zhangzhao','age':18}
    with open('zz.text','w') as f:
        f.write(json.dumps(data))# 等价于json.dump(data,f)
        #将data内的数据序列化成为str类型,然后写到zz.text里面
    # Author:Zhang Zhao
    #json反序列化实现
    import json
    with open('zz.text','r') as f:
        data = json.loads(f.read())# 等价于json.load(f)
        #将zz.text里json序列化的数据转换成为原来的字典数据类型。
    
    print(data,type(data))
    
    {'name': 'zhangzhao', 'age': 18} <class 'dict'>

     下面是利用json序列化实现简单的用户注册,实现用户登录,并且当输入次数大于三次时便会锁定。(本来输入密码想用getpass,但不知为何pycharm里执行getpass有点问题。。。)

    可以参考Alex的博客学习python数据类型。

    # Author:Zhang Zhao
    import getpass, json
    
    with open('data.text', 'r') as f:
        # data = eval(json.load(f))
        data = json.loads(f.read())
    choice = input('注册还是登录:').strip()
    count = 0
    while True:
        if choice == '注册':
            username = input('请输入用户名:')
            if username.strip() in data:
                print('用户名已存在,请换一个')
            else:
                pwd = input('请输入密码:')
                data[username] = pwd
                print('注册成功')
                with open('data.text', 'w') as f:
                    f.write(json.dumps(data))
                break
        elif choice == '登录':
            username = input('请输入用户名:')
            pwd = input('请输入密码:')
            if pwd == data.get(username):
                print('验证成功')
                break
            else:
                print('用户名或密码错误')
                count += 1
                if count > 3:
                    print('输入错误次数太多,滚')
                    break
        else:
            break
    View Code
  • 相关阅读:
    avcodec_decode_video2少帧问题
    什么是I帧,P帧,B帧
    让Ubuntu可以压缩/解压缩RAR文件
    Linux 向文件末尾追加命令
    valgrind: failed to start tool 'memcheck' for platform 'amd64-linux': No such file or directory
    《王者之剑2》性能数据精讲
    Unity加载模块深度解析(纹理篇)
    Unity加载模块深度解析(Shader)
    Unity加载模块深度解析(网格篇)
    Unity将来时:IL2CPP是什么?
  • 原文地址:https://www.cnblogs.com/zz1314/p/10323592.html
Copyright © 2011-2022 走看看