序列化的目的

1.以某种存储形式使自定义对象持久化
2.将对象从一个地方传递到另一个地方
3.使程序更具有维护性

json

json多语言通用
四个功能:dumps、dump、loads、load

#将对象转换字符串,存储到文件中(dump)
import json
dic = {1:2,3:4,5:6}
f = open('a1.txt','w',encoding='utf-8')
s = json.dump(dic,f)
print(s)
运行结果:
文件中已填写的内容:{": 6}
#将文件的字符串转换成原格式输出(load)
f = open('a1.txt','r',encoding='utf-8')
s1 = json.load(f)
print(type(s1),s1)
运行结果:
<': 6}
将对象转换成字符串
import json
lst = [1,2,3,4]
s = json.dumps(lst)
print(type(s),s)
运行结果:
<class 'str'> [1, 2, 3, 4]
#将字符串转换成对象
lst = [1,2,3,4]
s1 = json.loads(s)
print(type(s1),s1)
运行结果:
<class 'list'> [1, 2, 3, 4]

pickle

python独有的序列化

#将对象转换为文件(内容是字节,看不懂的字节)
import pickle
f = open('a2.py','wb')
dic = {1:2,3:4}
s = pickle.dump(dic,f)
print(s)
运行结果:文件已填写内容,但是是一串看不懂的字节
#将字节文件转换成对象
f1 = open('a2.py','rb')
s1 = pickle.load(f1)
print(s1)
运行结果:{1: 2, 3: 4}
#将对象转换成字节
import pickle
dic = {1:2,3:4}
s = pickle.dumps(dic)
print(s)
运行结果:b'\x80\x03}q\x00(K\x01K\x02K\x03K\x04u.'
#将字节转换成对象
s1 = pickle.loads(s)
print(s1)
运行结果:
{1: 2, 3: 4}

shelve

shelve序列化,比之前讲的json和pickle都要简单,但是一般是用于自己在本地,若上线的话还需要json,但是它操作简单,比较方便
类似于字典的操作

import shelve
f = shelve.open('a2')
#创建了3个文件,a2.bak(是备份),这三个文件的内容都不要有任何的修改
f['name'] = 'alex' #增加键值对
f['age'] = 18
print(f['name'])
打印结果:alex
若要修改里面已有的内容,需要特别注意一下,有可能会修改不成功,需要在,open('a2',writeback = True)

##实现修改name的操作
import shelve
f = shelve.open('a2',writeback=True)
f['name'] = 'baoyuan'
print(f['name'])

Python之路--序列化的更多相关文章

  1. python之路 序列化 pickle,json

    运行代码,毫不留情地得到一个TypeError: Traceback (most recent call last): ... TypeError: <__main__.Student obje ...

  2. Python之路第五天,基础(5)-序列化和字符串格式化

    序列化 Python中用于序列化的两个模块 json 用于『字符串』和『python基本数据类型』间进行转换 pickle 用于『python特有的类型』和『python基本数据类型』间进行转换 js ...

  3. 小白的Python之路 day4 json and pickle数据标准序列化

    一.简述 我们在写入文件中的数据,只能是字符串或者二进制,但是要传入文件的数据不一定全是字符串或者二进制,那还要进行繁琐的转换,然后再读取的时候,还要再转回去,显得很麻烦,今天就来学习标准的序列化:j ...

  4. python之路 目录

    目录 python python_基础总结1 python由来 字符编码 注释 pyc文件 python变量 导入模块 获取用户输入 流程控制if while python 基础2 编码转换 pych ...

  5. Python之路【第十七篇】:Django【进阶篇 】

    Python之路[第十七篇]:Django[进阶篇 ]   Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接 ...

  6. Python之路【第十七篇】:Django之【进阶篇】

    Python之路[第十七篇]:Django[进阶篇 ]   Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接 ...

  7. Python之路【第十七篇】:Django【进阶篇】

    Python之路[第十七篇]:Django[进阶篇 ]   Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接 ...

  8. Python之路,Day4 - Python基础4 (new版)

    Python之路,Day4 - Python基础4 (new版)   本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 ...

  9. python之路1

    python之路 http协议 html HTML2 CSS选择器 CSS属性操作 CSS属性操作/下 JavaScript(js)/上 JavaScript的对象 JavaScript的对象/下 前 ...

随机推荐

  1. hdu5036 Explosion 传递闭包

    大哲哥的讲课内容 根据期望的线性性,得到总期望为各个点被轰的概率(不会证,好像是这样吧) 传递闭包解决出每个点的祖先(能到达它的点)就能算概率了 bitset能贡献1/w的复杂度,而且导致Floyd只 ...

  2. Hadoop体系结构

    在前面的博文中,我已经介绍过Hadoop的基本概念了(见博文初识Hadoop),今天来介绍一下Hadoop的体系结构. Hadoop的两大核心是HDFS和MapReduce,而整个Hadoop的体系结 ...

  3. NHibernate中创建User类报错问题

    前两天刚开始学习NHibernate架构,照着前辈的例子打了一遍运行之后没问题,然后自己创建了一个User的Model发现一运行就报User附近有错误,然后就检查,类写的没错用了virtual,Use ...

  4. feign容断忽略某些异常

    @HystrixCommand(ignoreExceptions={ BusinessException.class, IllegalArgumentException.class, BadCrede ...

  5. 洛谷 CF1148A Another One Bites The Dust

    Another One Bites The Dust CF的题目在你谷上难度虚高似乎已成常态 不过这道题相比于愚人节的那几道相对好得多,没有被评成紫题. 这道题题面意思比较清楚,就是对于给定数量的'a ...

  6. gulp运行步骤

    一.运行→输入cmd→跳出命令窗口二.cd D: 敲回车进入D盘,cd www 进入项目路径 cd mygulp三.执行 cnpm install gulp --save-dev 命令 (初始化安装g ...

  7. Hive的HQL(2)

    Hive基础(1) Hive的HQL(2) 1. HQL的数据定义,HQL是一种SQL方言,支持绝大部分SQL-92标准.但是和SQL的差异为:不支持行级别的操作,不支持事务等.HQL的语法接近于My ...

  8. C#调用C++接口返回字符串的做法

    作者:朱金灿 来源:http://blog.csdn.net/clever101 现在有这样一种情景,假如C#调用C++接口需要返回一个字符串.因为字符串是不定长的,因此传递一个定长的字符串进去是不合 ...

  9. object flash

    <!-- html插入flash --> <object type="application/x-shockwave-flash" width="100 ...

  10. idea2018.1.2 激活

    https://www.cnblogs.com/ycjcham/p/8724451.html