json & pickle 序列化
#!/usr/bin/python
# -*- coding: utf-8 -*- # 序列化: 例如把字典写进文件
info = {
'name': 'alex',
'age': 22
} f = open('test.text', 'w')
f.write(str(info)) # 把字典作为字符串写进文件
f.close() # 反序列化: 接上例, 把文件中的字符串读取并转换成字典
f = open('test.text', 'r')
data = eval(f.read())
f.close()
print(data['age']) # 用json来完成序列化
import json
info = {
'name': 'alex',
'age': 22
} f = open('test.text', 'w')
print(json.dumps(info))
f.write(json.dumps(info)) # 序列化
f.close() # 用json来完成反序列化
f = open('test.text', 'r')
data = json.loads(f.read()) # 反序列化
print(data['age']) # 序列化更复杂的应用, 不支持. json只能进行简单数据的序列化. json主要支持不同语言之间进行数据交互,所以太复杂的做不了. xml在逐渐被json取代.
def sayhi(name):
print('hello', name) info = {
'name': 'alex',
'age': 22,
'func': sayhi
} f = open('test.text', 'w')
f.write(json.dumps(info)) # 失败. json不能处理这种复杂的信息.
f.close() # 若需要处理更复杂的数据, 用pickle. pickle只有在Python里能用, 其它语言不行.
# 序列化.
import pickle
def sayhi(name):
print('hello', name) f = open('test.text', 'wb') info = {
'name': 'alex',
'age': 22,
'func': sayhi
} f.write(pickle.dumps(info)) # pickle会默认转换成二进制,所以读取方式应该是wb而不是w.
f.close() # 反序列化
import pickle
def sayhi(name):
print('hello2', name) # 反序列化一个不同的函数(名字一样, 方法体不一样),也可以. ? 如果没有序列化过, 为佳么可以反序列化? f = open('test.text', 'rb') data = pickle.loads(f.read()) # 反序列化. 这样会出错, 因为函数sayhi用完就释放了, 内存地址就不存在了. 所以这
print(data['func']('Alex'))
# 序列化.
import pickle
def sayhi(name):
print('hello', name) info = {
'name': 'alex',
'age': 22,
'func': sayhi
} f = open('test.text', 'wb') pickle.dump(info, f) # 等同于 f.write(pickle.dumps(info))
f.close() # 反序列化
import pickle
def sayhi(name):
print('hello2', name) # 反序列化一个不同的函数(名字一样, 方法体不一样),也可以. ? 如果没有序列化过, 为佳么可以反序列化? f = open('test.text', 'rb') data = pickle.load(f) # 等同于 data = pickle.loads(f.read())
print(data['func']('Alex'))
# 序列化. dumps两次, loads的时候会出错 . 所以最好只dumps 一次, load 一次.
import json info = {
'name': 'alex',
'age': 22
} f = open('test.text', 'w') f.write(json.dump(info, f)) # 等同于 f.write(pickle.dumps(info)) info['age'] = 21
f.write(json.dumps(info)) # 这样会存两个字典进去. 两个字典的age值不同. f.close() # 反序列化
import json f = open('test.text', 'r')
data = json.loads(f) print(data)
json & pickle 序列化的更多相关文章
- Python3基础(4)匿名函数、装饰器、生成器、迭代器、内置函数、json&pickle序列化、软件目录开发规范、不同目录间模块调用
---------------个人学习笔记--------------- ----------------本文作者吴疆-------------- ------点击此处链接至博客园原文------ 1 ...
- json&pickle序列化
一.用途 我们需要将内存中的数据进行序列化,即写入文件中时,写入的类型只能是字符串或者二进制类型.但是如果我们想要将复杂一些的数据类型,如:列表.字典或者函数之类的同样进行序列化,我们就要用到 jso ...
- json&pickle序列化和软件开发规范
json和pickle 用于序列化的两个模块 json 用于字符串和python数据类型间进行转换,json只支持列表,字典这样简单的数据类型 但是它不支持类,函数这样的数据类型转换 pickle ...
- 13、Python文件处理、os模块、json/pickle序列化模块
一.字符编码 Python3中字符串默认为Unicode编码. str类型的数据可以编码成其他字符编码的格式,编码的结果为bytes类型. # coding:gbk x = '上' # 当程序执行时, ...
- Python序列化,json&pickle&shelve模块
1. 序列化说明 序列化可将非字符串的数据类型的数据进行存档,如字典.列表甚至是函数等等 反序列化,将通过序列化保存的文件内容反序列化即可得到数据原本的样子,可直接使用 2. Python中常用的序列 ...
- 第五章 模块之 shtil 、 json / pickle、importlib、collections
5.8 shtil 高级的 文件.文件夹.压缩包 处理模块 shutil.rmtree 删除目录 import shutilshutil.rmtree(path) shutil.move 重命名:移动 ...
- python常用模块(模块和包的解释,time模块,sys模块,random模块,os模块,json和pickle序列化模块)
1.1模块 什么是模块: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文 ...
- python序列化: json & pickle & shelve 模块
一.json & pickle & shelve 模块 json,用于字符串 和 python数据类型间进行转换pickle,用于python特有的类型 和 python的数据类型间进 ...
- Python-Day4 Python基础进阶之生成器/迭代器/装饰器/Json & pickle 数据序列化
一.生成器 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面 ...
随机推荐
- PHP基本的语法结构
学过C语言的话,上手PHP语言就非常快了,如果你有bash shell的基础,那恭喜你,上手PHP会更快,我们先来了解一下一些比较简单的东西,界定符和注释在PHP中的写法: 一 php文档的语法结构 ...
- Yii2.0源码阅读-PHP如何与redis通信?
PHP与Redis可以通过socket进行通信,前提是PHP需要实现Redis的协议 RESP协议描述: 字符串 \r\n : 表示一个正确的状态信息,具体信息是'+'后面的字符(Simple Str ...
- 二维码js生成库
jr-qrcode 把字符串生成二维码,并以Base64 URL形式输出. 支持白色二维码,即反色二维码. 兼容性 插件使用了H5的canvas特性进行二维码绘制,最后输出base64 url,因此本 ...
- javascript预览图片——IT轮子系列(九)
再使用htm控件 <input type="file" name="file" /> 上传图片的时候,往往需要先预览图片,然后点击保存按钮,把图片上 ...
- Java---SSH(MVC)面试题
1. 谈谈你mvc的理解 MVC是Model-View-Controler的简称.即模型-视图-控制器.MVC是一种设计模式,它强制性的把应用程序的输入.处理和输出分开. MVC中的模型 ...
- Day6_内置函数
定义完一个有名函数,可以直接利用函数名+括号来执行,例如:func() 有名函数: def func(x,y,z=1): return x+y+z 匿名函数: lambda x,y,z=1:x+y+z ...
- 算法库中heap应用
STL中make_heap 的接口为: default (1) template <class RandomAccessIterator> void make_heap (RandomAc ...
- spring cloud 入门系列六:使用Zuul 实现API网关服务
通过前面几次的分享,我们了解了微服务架构的几个核心设施,通过这些组件我们可以搭建简单的微服务架构系统.比如通过Spring Cloud Eureka搭建高可用的服务注册中心并实现服务的注册和发现: 通 ...
- 用js来实现那些数据结构16(图02-图的遍历)
上一篇文章我们简单介绍了一下什么是图,以及用JS来实现一个可以添加顶点和边的图.按照惯例,任何数据结构都不可或缺的一个point就是遍历.也就是获取到数据结构中的所有元素.那么图当然也不例外.这篇文章 ...
- threesum
算法题 问题描述:在一些给定的数中,找到三个数,他们相加的和是0,并且这三个数的组合是不能重复的 例子: input [-1, 0, -1, 2, 1] Output [[-1, 1 ,0], [-1 ...