用于序列化的模块

  • 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

json&pickle数据序列化模块的更多相关文章

  1. Python-Day4 Python基础进阶之生成器/迭代器/装饰器/Json & pickle 数据序列化

    一.生成器 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面 ...

  2. 迭代器/生成器/装饰器 /Json & pickle 数据序列化

    本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器&生成器 列表生成式 孩子,我现在有个需 ...

  3. python基础6之迭代器&生成器、json&pickle数据序列化

    内容概要: 一.生成器 二.迭代器 三.json&pickle数据序列化 一.生成器generator 在学习生成器之前我们先了解下列表生成式,现在生产一个这样的列表[0,2,4,6,8,10 ...

  4. Python之路-python(装饰器、生成器、迭代器、Json & pickle 数据序列化、软件目录结构规范)

    装饰器: 首先来认识一下python函数, 定义:本质是函数(功能是装饰其它函数),为其它函数添加附件功能        原则:        1.不能修改被装饰的函数的源代码.        2.不 ...

  5. Json & pickle 数据序列化

    前提: 文本文件中只能写入字符串或ascii码格式的内容. info={'name':'zoe','age':18} f=open('test.txt','w') f.write(info) #在文本 ...

  6. Python3 json &pickle 数据序列化

    json 所有语言通用的信息交换格式 json.dumps()将list列表.dict字典.元组.函数等对象转换为可以存储的字符格式存入文件 json.dump(数据对象名,已以写方式打开的对象) 直 ...

  7. day04 装饰器 迭代器&生成器 Json & pickle 数据序列化 内置函数

    回顾下上次的内容 转码过程: 先decode  为 Unicode(万国码 ) 然后encode 成需要的格式     3.0 默认是Unicode  不是UTF-8 所以不需要指定  如果非要转为U ...

  8. json & pickle数据序列化

    序列化:把内存中的数据对象变成字符串 info = { 'name':'tom', 'age':22 } f = open("test.txt","w") f. ...

  9. 装饰器、生成器,迭代器、Json & pickle 数据序列化

    1. 列表生成器:代码例子 a=[i*2 for i in range(10)] print(a) 运行效果如下: D:\python35\python.exe D:/python培训/s14/day ...

随机推荐

  1. Rgb2Gray

    GPU上运行的函数又称为Kernel,用__global__修饰 调用Kernel函数时,用FunctionCall<<<block_shape, thread_shape, int ...

  2. Spring集合注入

    1.集合注入 上一篇博客讲了spring得属性注入,通过value属性来配置基本数据类型,通过<property>标签的 ref 属性来配置对象的引用.如果想注入多个数据,那我们就要用到集 ...

  3. Adobe Photoshop CC 2019画板背景色白底如何去掉?

    Adobe Photoshop CC 2019画板背景色白底切透明图片很不方便,有两种方法可以解决: 第一种方法: 新建文档的时候直接背景内容直接选择透明 若设计师提供的设计稿是白底也没关系,就是第二 ...

  4. css 设计规范

    外部 div 设置 margin 和 padding: 内部每个元素只设计跟自己相关的属性,这样方便复用:

  5. python中匿名函数lambda

    简单来说,编程中提到的 lambda 表达式,通常是在需要一个函数,但是又不想费神去命 名一个函数的场合下使用,也就是指匿名函数. 先看它的几个用法: map( lambda x: x*x, [y f ...

  6. Windows10开发手记-Windows App Certification Kit使用教程

    最近有同学通过MVP的渠道询问我Windows 10应用提交审核前是否有工具能够像win7一样做App兼容性测试,其实Windows SDK已经继承了一套优秀的App测试认证工具,这可以帮助我们快速通 ...

  7. rest framework 尝鲜

    安装 pip install djangorestframework 新建项目 python manage.py startapp idcs 添加模型(models.py) class Idcs(mo ...

  8. 简单标签SimpleTag

    想要开发自定义标签,大多数情况下都要重写doStartTag(),doAfterBody()和doEndTag()方法,并且还要知道SKIP_BODY,EVAL_BODY等等的变量代表着什么,在什么方 ...

  9. SOA和微服务架构的区别

    微服务架构强调的第一个重点就是业务系统需要彻底的组件化和服务化,原有的单个业务系统会拆分为多个可以独立开发,设计,运行和运维的小应用.这些小应用之间通过服务完成交互和集成.每个小应用从前端web ui ...

  10. MySQL 中的数字类型

    MySQL 中数据类型常用的就三大类: 数字类型/numeric types 日期和时间/date and time types 字符类型/string (character and byte) ty ...