json & pickle数据序列化
序列化:把内存中的数据对象变成字符串
info = {
'name':'tom',
'age':22
}
f = open("test.txt","w")
f.write(str(info))
f.close()
反序列化:从硬盘中把数据加载到内存
f = open("test.txt","r")
data = eval(f.read())
f.close()
print(data['age'])
json方式
import json
info = {
'name':'tom',
'age':22
}
f = open("test.txt","w")
f.write(json.dumps(info))
f.close()
import json
f = open("test.txt","r")
data = json.loads(f.read())
print(data["age"])
json只能处理字典,列表,字符串等简单的数据类型,因为json适用于不同语言的数据交互,每种语言都有这些基本的数据类型,只能处理这些简单的
pickle可以处理复杂的数据类型,如函数,类,但是不能跨语言,只能用于python
import pickle def sayhi(name):
print('hello,',name) info = {
'name':'tom',
'age':'',
'func':'sayhi'
} f = open("test.txt","wb")
f.write(pickle.dumps(info))
f.close()
import pickle
def sayhi(name): # 需要再把函数拷贝到这里来,运行结果才不会出过错,上面的代码把内存地址序列化到文件中,反序列化的时候,就没有内存地址了,因为sayhi函数的内存地址伴随着程序执行完后,内存地址就被释放掉了,这个函数对象就找不到了,所以也就无法重新导入了,会报错
print('hello,',name)
f=open("test.txt","rb")
data=pickle.loads(f.read())
print(data["func"]("tom"))
json & pickle数据序列化的更多相关文章
- Python-Day4 Python基础进阶之生成器/迭代器/装饰器/Json & pickle 数据序列化
一.生成器 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面 ...
- python基础6之迭代器&生成器、json&pickle数据序列化
内容概要: 一.生成器 二.迭代器 三.json&pickle数据序列化 一.生成器generator 在学习生成器之前我们先了解下列表生成式,现在生产一个这样的列表[0,2,4,6,8,10 ...
- 迭代器/生成器/装饰器 /Json & pickle 数据序列化
本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器&生成器 列表生成式 孩子,我现在有个需 ...
- Python之路-python(装饰器、生成器、迭代器、Json & pickle 数据序列化、软件目录结构规范)
装饰器: 首先来认识一下python函数, 定义:本质是函数(功能是装饰其它函数),为其它函数添加附件功能 原则: 1.不能修改被装饰的函数的源代码. 2.不 ...
- json&pickle数据序列化模块
用于序列化的模块 json,通用的序列化方式,序列化成为str类型,支持所有语言识别,序列化的数据具有局限性. pickle,python的所有数据类型都可以被序列化,序列化为bites格式,只适用于 ...
- Json & pickle 数据序列化
前提: 文本文件中只能写入字符串或ascii码格式的内容. info={'name':'zoe','age':18} f=open('test.txt','w') f.write(info) #在文本 ...
- Python3 json &pickle 数据序列化
json 所有语言通用的信息交换格式 json.dumps()将list列表.dict字典.元组.函数等对象转换为可以存储的字符格式存入文件 json.dump(数据对象名,已以写方式打开的对象) 直 ...
- day04 装饰器 迭代器&生成器 Json & pickle 数据序列化 内置函数
回顾下上次的内容 转码过程: 先decode 为 Unicode(万国码 ) 然后encode 成需要的格式 3.0 默认是Unicode 不是UTF-8 所以不需要指定 如果非要转为U ...
- 装饰器、生成器,迭代器、Json & pickle 数据序列化
1. 列表生成器:代码例子 a=[i*2 for i in range(10)] print(a) 运行效果如下: D:\python35\python.exe D:/python培训/s14/day ...
随机推荐
- phalcon下拉列表
<?php echo Phalcon\Tag::selectStatic("gender", array(0 => "Male", 1 => ...
- 运动目标检测ViBe算法
一.运动目标检测简介 视频中的运动目标检测这一块现在的方法实在是太多了.运动目标检测的算法依照目标与摄像机之间的关系可以分为静态背景下运动检测和动态背景下运动检测.先简单从视频中的背景类型来讨论. ...
- [转]这五种方法前四种方法只支持IE浏览器,最后一个方法支持当前主流的浏览器(火狐,IE,Chrome,Opera,Safari)
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- 剑指 offer set 21 圆圈中最后剩下的数字
思路 1. 经典解法是用环形链表模拟圆圈, 然后每次减少一个节点. 时间复杂度为 o(mn), 空间复杂度为 o(n) 2. 转化成数学问题, 递推公式决定下一个元素. 时间复杂度为 o(n), 空间 ...
- 打印系统所有的PID
#!/usr/bin/env python #-*- coding:utf-8 -*- ''' 打印系统所有的PID ''' import os def get_all_pid(): for pid ...
- 自定义View总结
写的很好,代你分析原码,关于 View Measure 测量机制,让我一次把话说完
- IOS6.0调用通讯录和之前的差别
6.通讯录列表获取差异 自iOS6.0后获取通讯录列表需要询问用户,经过用户同意后才可以获取通讯录用户列表.而且ABAddressBookRef的初始化工作也由ABAddressBookCreate函 ...
- 170502、linux下配置jdk8
1.下载源码包jdk-8u45-linux-x64.tar.gz(省略) 2.解压 tar -zxvf jdk-8u45-linux-x64.tar.gz 3.配置jdk vi /etc/profil ...
- 170315、spring:@Autowired等注解的别样玩法
适用场景: 1.IOC容器完成启动就想加载进来的数据 2.多个已经定义好的组件,想在使用的时候通过一行代码就全部拿到 3.等等.... 联想:@Autowired.@Resources等也可以类似使用 ...
- 160510、jQuery给input绑定回车事件
<script type="text/javascript" src="Scripts/jquery-1.6.2.js"></script&g ...