• 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
  • 相关阅读:
    Oracle的rownum原理和使用
    ehcache 使用笔记
    @PostConstruct 注解
    Dubbo java.io.IOException: Can not lock the registry cache file
    java 学习 todoList
    因为本地没有配置 localhost 导致的 eclipse 的奇葩问题
    cheatsheet——mac 上的一款可以显示软件所有快捷键的小工具
    对象作为 map 的 key 时,需要重写 equals 方法和 hashCode 方法
    eclipse一直报An internal error occurred during: "Building workspace". GC overhead limit exceeded
    如何修改SVN客户端中保存的密码
  • 原文地址:https://www.cnblogs.com/zz1314/p/10323592.html
Copyright © 2020-2023  润新知