python3.x 基础四:json与pickple
- 每次打开一个文件,只dump1次
- json.dump(dump的内容,文件句柄)
- json.load(文件句柄)
- json可以处理列表/字典/字符串等简单数据类型,但是不能处理复杂的数据类型,如函数的内存地址
- 不同语言间都可以用json文件
import json
dict1={'name':'alex','age':22,'salary':1000}
print('dict is %s\ndumping dict to file...' % (dict1))
fd = open('fd.txt','w',encoding='utf-8')
# with open('fd.txt','w',encoding='utf-8') as fd:
# json.dump(dict1,fd)
dict2={'name':'oldboy','age':32,'salary':2000}
# with open('fd.txt','w',encoding='utf-8') as fd:
# json.dump(dict2,fd)
json.dump(dict1,fd)
fd.close()
# json.dump(dict2,fd)
fd = open('fd.txt','r',encoding='utf-8')
print('load content from file...')
print(json.load(fd))
fd.close()
output:
dict is {'age': 22, 'salary': 1000, 'name': 'alex'}
dumping dict to file...
load content from file...
{'age': 22, 'salary': 1000, 'name': 'alex'}
dumping dict to file...
import json
dict1={}
def func():
print('in the func')
dict1['name']=func
fd = open('fdw.txt','w',encoding='utf-8')
print('dumping dict to file...' % (dict1))
json.dumps(dict1,fd)
fd.close()
error:
TypeError: <function func at 0x7f0828c68488> is not JSON serializable
- pickle能处理python所有的数据类型
import pickle
dict1={}
def func():
print('in the func')
dict1['name']=func
fd = open('fdw.txt','wb')
print('dumping dict to file... %s' % (dict1))
pickle.dump(dict1,fd)
fd.close()
fd = open('fdw.txt','rb')
print(pickle.load(fd))
fd.close()
output:
dumping dict to file... {'name': <function func at 0x7fa1904d4488>}
{'name': <function func at 0x7fa1904d4488>}
dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)
Serialize ``obj`` to a JSON formatted ``str``.
- 将一个对象转换成json格式的字符串
loads(s, *, encoding=None, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance
containing a JSON document) to a Python object.
- 将一个json格式的对象反序列成python对象
import json
l1 = ["alex", 123, "eric"]
l2 = ["alex", 123, 'eric']
s1 = """ ["alex", 123, "eric"] """
s2 = """ ["alex", 123, 'eric'] """
print(json.dumps(l1),type(json.dumps(l1))) # list to str
print(json.dumps(l2),type(json.dumps(l2))) # list to str
print(json.dumps(s1),type(json.dumps(s1))) # still str
print(json.dumps(s2),type(json.dumps(s2))) # still str # 四个正确
# print(json.loads(l1)) # json格式需要字符串,这是列表
# print(json.loads(l2)) # 同上
print(json.loads(s1),type(json.loads(s1))) # str to list,json格式需要双引号
# print(json.loads(s2)) # 格式错误,有单引号 dict1={}
dict1["name"]="xxx"
print(json.dumps(dict1),type(json.dumps(dict1)))
# str1='''dict1["name"]="xxx"'''
# print(json.loads(str)) l = ['iplaypython', [1, 2, 3], {'name':'xiaoming'}]
encoded_json = json.dumps(l)
print(encoded_json,type(encoded_json))
decode_json = json.loads(encoded_json)
print(decode_json,type(decode_json)) 输出
["alex", 123, "eric"] <class 'str'>
["alex", 123, "eric"] <class 'str'>
" [\"alex\", 123, \"eric\"] " <class 'str'>
" [\"alex\", 123, 'eric'] " <class 'str'>
['alex', 123, 'eric'] <class 'list'>
{"name": "xxx"} <class 'str'>
["iplaypython", [1, 2, 3], {"name": "xiaoming"}] <class 'str'>
['iplaypython', [1, 2, 3], {'name': 'xiaoming'}] <class 'list'>
python3.x 基础四:json与pickple的更多相关文章
- python3.x 基础四:目录获取及目录规范
1.获取目录 import os,sys print('程序文件运行相对位置>>',os.path.abspath(__file__)) print('程序文件上级绝对目录>> ...
- python3.x 基础四:生成器与迭代器
1.预先存值到内存,调用之前已经占用了内存,不管用与不用,都占用内存 >>> a=[1,2,3,4,5] >>> type(a) <class 'list'& ...
- Python 基础 四 面向对象杂谈
Python 基础 四 面向对象杂谈 一.isinstance(obj,cls) 与issubcalss(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls ...
- Python全栈开发【基础四】
Python全栈开发[基础四] 本节内容: 匿名函数(lambda) 函数式编程(map,filter,reduce) 文件处理 迭代器 三元表达式 列表解析与生成器表达式 生成器 匿名函数 lamb ...
- Bootstrap<基础四> 代码
Bootstrap 允许您以两种方式显示代码: 第一种是 <code> 标签.如果您想要内联显示代码,那么您应该使用 <code> 标签. 第二种是 <pre> 标 ...
- 从零开始学习PYTHON3讲义(四)让程序更友好
<从零开始PYTHON3>第四讲 先看看上一讲的练习答案. 程序完成的是功能,功能来自于"程序需求"("需求"这个词忘记了什么意思的去复习一下第二讲 ...
- C#_02.13_基础四_.NET方法
C#_02.13_基础四_.NET方法 一.方法概述: 方法是一块具有名称的代码.可以通过方法进行调用而在别的地方执行,也可以把数据传入方法并接受数据输出. 二.方法的结构: 方法头 AND 方法 ...
- Java基础-处理json字符串解析案例
Java基础-处理json字符串解析案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 作为一名开发人员,想必大家或多或少都有接触到XML文件,XML全称为“extensible ...
- python3字典:获取json响应值来进行断言的用法详解
在Python中我们做接口经常用到一些json的返回值我们常把他转化为字典,在前面的python数据类型详解(全面)中已经谈到对字典的的一些操作,今天我们就获取json返回值之后,然后转化为字典后的获 ...
随机推荐
- 2019-2020-1 20199326《Linux内核原理与分析》第六周作业
本周学习了庖丁解牛Linux内核分析第五章:系统调用的三层机制(下),是上一章的延续 实验内容:使用gdb跟踪分析一个系统调用内核函数 上周实验我选择的getpid这个系统系统调用,这次准备使用gdb ...
- 解决Oracle在命令行下无法使用del等键问题
前言: Oracle使用Linux命令行进行编辑? 有PL/SQL development,SQL development等工具,为何用Linux命令行? 但也免不了有用的的时候 以下是解决在Linu ...
- 【小技巧】【App store切换为中文】
为什么80%的码农都做不了架构师?>>> 贡献作者 -[XJDomain]博客XJ: https://my.oschina.net/shengbingli/blogGitHub ...
- Linux开发初探
坚持用了十几天的Linux操作系统,学会了很多的东西,但现在必须得抉择如何选择开发工具.在这些天的开发中,各种Linux下的IDE都有 所尝试.一向看好的Code::Blocks还是过于简单,用了一阵 ...
- caffe学习笔记(1)安装 - Ubuntu 15.04
官方安装手册 备注:使用系统 - Ubuntu 15.04 64位操作系统(若系统位于虚拟机上,在安装CUDA后,Ubuntu将无法进入图形界面) /************************* ...
- Win10美吱er吱er,Win10修改默认字体的方法
请参考以下步骤(需要修改注册表,修改前请先备份,以便在出现问题时能够及时恢复): 例:将系统字体改为宋体 1.Windows+r,输入:regedit 2.定位以下路径:HKEY_LOCAL_MACH ...
- P5522 [yLOI2019] 棠梨煎雪
updata on 2020.3.19 今天把博客从洛谷往博客园搬,图炸了 其实早就发现了,懒得管 那图其实就是一个用dev自带的调试功能调试时,RE了的报错 当时觉得很奇怪看不出是啥,现在再看已经觉 ...
- CF906D Power Tower
扩展欧拉定理 CF906D Power Tower 洛谷交的第二个黑题 题意 给出一个序列\(w-1,w_2,\cdots,w_n\),以及\(q\)个询问 每个询问给出\(l,r\),求: \[w_ ...
- Regex 正则表达式入门
0,什么是正则表达式 正则表达式(Regular Expression简写为Regex),又称为规则表达式,它是一种强大的文本匹配模式,其用于在字符串中查找匹配符合特定规则的子串. 正则表达式是独立于 ...
- Spring AOP概述
一.AOP的基本概念: 首先先给出一段比较专业的术语: 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的 ...