1.json序列介绍:提供4个关键字:dumps,dump,loads,load(与pickle用法完全相同)

  语法:f.write(bytes(json.dumps(dict),encoding="utf-8"))

     r=json.loads(f.read().decode("utf-8"))

  将字典存入文件,由于字典格式不能转化成字节格式的,所以引入json

  A.将一个字典转化成json序列存入一个文件

import json

accounts={
1000:{
'name':'Tom',
'email':'22016311@qq.com',
'passwd':'abc123',
'balance':20000,
'phone':'44165465',
'bank_acc':{
'ICBC':165116161,
'CBC':16516516516,
'ABC':656151616516
}
},
1001:{
'name':'Tom1',
'email':'220116311@qq.com',
'passwd':'abc1123',
'balance':210000,
'phone':'441654165',
'bank_acc':{
'ICBC':16511161611,
'CBC':165165165161,
'ABC':6561516165161
}
}
} print (json.dumps(accounts)) #将字典转成json序列
f=open("account.db","wb") #写入文件account.db
f.write(bytes(json.dumps(accounts),encoding="utf-8")) #写入文件account.db
f.close()
-------------------------------------------------------------------
{"1000": {"name": "Tom", "email": "22016311@qq.com", "passwd": "abc123", "balance": 20000, "phone": "44165465", "bank_acc": {"ICBC": 165116161, "CBC": 16516516516, "ABC": 656151616516}}, "1001": {"name": "Tom1", "email": "220116311@qq.com", "passwd": "abc1123", "balance": 210000, "phone": "441654165", "bank_acc": {"ICBC": 16511161611, "CBC": 165165165161, "ABC": 6561516165161}}}

  B.重新创建一个新的python文件读取account.db中的内容:

import pickle

account_file=open("account.db","rb")                   #打开文件
account_dict=json.loads(account_file.read().decode("utf-8")) #以json加载文件
#print (account_dict)
account_file.close()
#print(type(account_dict['1000']['balance']))
account_dict['1000']['balance'] -= 500 #取字典中balance然后减500
print (account_dict) f=open("account.db","wb")
f.write(bytes(json.dumps(account_dict),encoding="utf-8")) #将变更后的内容dumps入文件
f.close()
print (account_dict)
-----------------------------------------------------------------------------

{'1000': {'name': 'Tom', 'email': '22016311@qq.com', 'passwd': 'abc123', 'balance': 20000, 'phone': '44165465', 'bank_acc': {'ICBC': 165116161, 'CBC': 16516516516, 'ABC': 656151616516}}, '1001': {'name': 'Tom1', 'email': '220116311@qq.com', 'passwd': 'abc1123', 'balance': 210000, 'phone': '441654165', 'bank_acc': {'ICBC': 16511161611, 'CBC': 165165165161, 'ABC': 6561516165161}}}
{'1000': {'name': 'Tom', 'email': '22016311@qq.com', 'passwd': 'abc123', 'balance': 19500, 'phone': '44165465', 'bank_acc': {'ICBC': 165116161, 'CBC': 16516516516, 'ABC': 656151616516}}, '1001': {'name': 'Tom1', 'email': '220116311@qq.com', 'passwd': 'abc1123', 'balance': 210000, 'phone': '441654165', 'bank_acc': {'ICBC': 16511161611, 'CBC': 165165165161, 'ABC': 6561516165161}}}
{'1000': {'name': 'Tom', 'email': '22016311@qq.com', 'passwd': 'abc123', 'balance': 19500, 'phone': '44165465', 'bank_acc': {'ICBC': 165116161, 'CBC': 16516516516, 'ABC': 656151616516}}, '1001': {'name': 'Tom1', 'email': '220116311@qq.com', 'passwd': 'abc1123', 'balance': 210000, 'phone': '441654165', 'bank_acc': {'ICBC': 16511161611, 'CBC': 165165165161, 'ABC': 6561516165161}}}

二十六、python中json学习的更多相关文章

  1. python3.4学习笔记(二十六) Python 输出json到文件,让json.dumps输出中文 实例代码

    python3.4学习笔记(二十六) Python 输出json到文件,让json.dumps输出中文 实例代码 python的json.dumps方法默认会输出成这种格式"\u535a\u ...

  2. 二十六. Python基础(26)--类的内置特殊属性和方法

    二十六. Python基础(26)--类的内置特殊属性和方法 ● 知识框架 ● 类的内置方法/魔法方法案例1: 单例设计模式 # 类的魔法方法 # 案例1: 单例设计模式 class Teacher: ...

  3. 二十六个月Android学习工作总结【转】

    原文:二十六个月Android学习工作总结 1.客户端的功能逻辑不难,UI界面也不难,但写UI花的时间是写功能逻辑的两倍.     2.写代码前的思考过程非常重要,即使在简单的功能,也需要在本子上把该 ...

  4. python学习(二十) Python 中的比较:is 与 ==

    Python 中的比较:is 与 == 在 Python 中会用到对象之间比较,可以用 ==,也可以用 is .但是它们的区别是什么呢? is 比较的是两个实例对象是不是完全相同,它们是不是同一个对象 ...

  5. 二十六个月Android学习工作总结

    1.客户端的功能逻辑不难,UI界面也不难,但写UI花的时间是写功能逻辑的两倍. 2.写代码前的思考过程非常重要,即使在简单的功能,也需要在本子上把该功能的运行过程写出来. 3.要有自己的知识库,可以是 ...

  6. 二十六 Python分布式爬虫打造搜索引擎Scrapy精讲—通过downloadmiddleware中间件全局随机更换user-agent浏览器用户代理

    downloadmiddleware介绍中间件是一个框架,可以连接到请求/响应处理中.这是一种很轻的.低层次的系统,可以改变Scrapy的请求和回应.也就是在Requests请求和Response响应 ...

  7. python3.4学习笔记(二十五) Python 调用mysql redis实例代码

    python3.4学习笔记(二十五) Python 调用mysql redis实例代码 #coding: utf-8 __author__ = 'zdz8207' #python2.7 import ...

  8. python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法

    python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法window安装redis,下载Redis的压缩包https://git ...

  9. 深度学习(二十六)Network In Network学习笔记

    深度学习(二十六)Network In Network学习笔记 Network In Network学习笔记 原文地址:http://blog.csdn.net/hjimce/article/deta ...

随机推荐

  1. PDFObject的使用(转)

    1.pdfobject.js官网:https://pdfobject.com/ 2.在html文件中引入这个文件,以pdfobject.min.js为例 1 <script type=" ...

  2. MySQL: InnoDB的并发控制,锁,事务模型

    一.并发控制 为啥要进行并发控制? 并发的任务对同一个临界资源进行操作,如果不采取措施,可能导致不一致,故必须进行并发控制(Concurrency Control). 技术上,通常如何进行并发控制? ...

  3. PHP批量导入excell表格到mysql数据库

    PHP批量导入excell表格到mysql数据库,本人通过亲自测试,在这里分享给大家 1,下载 php  excell类库 网上搜索可以下载,这里不写地址 2,建html文件 <form met ...

  4. go & nssm

    参考 用go写windows系统服务

  5. Jpa/Hibernate ManyToOne 关联非主键列 延迟加载失效

    @ManyToOne配置延迟加载,如果是关联主键列, @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "billid", ...

  6. spark复习笔记(1)

    使用spark实现work count ---------------------------------------------------- (1)用sc.textFile(" &quo ...

  7. Linux系统性能测试工具(三)——内存性能综合测试工具lmbench

    本文介绍关于Linux系统(适用于centos/ubuntu等)的内存性能综合测试工具-lmbench.内存性能测试工具包括: 内存带宽测试工具——mbw: 内存压力测试工具——memtester: ...

  8. make_smbcodepage - 为Samba创建代码页文件

    总览 make_smbcodepage c|d 代码页 输入文件 输出文件 描述 这个工具是是Samba组件的一部分. 针对Samba 2.2的国际化功能,使用make_smbcodepage可以编译 ...

  9. 08java进阶——异常

    1.异常的概念 package cn.jxufe.java.chapter08.demo01; public class Test01ArithmeticException { public stat ...

  10. DOM-document 对象

    Document 对象Document 对象代表整个HTML 文档,可用来访问页面中的所有元素.Document 对象是 Window 对象的一个部分,可通过 window.document 属性来访 ...