一 序列化

什么叫序列化——将原本的字典、列表等内容转换成一个字符串的过程就叫做序列化

字典示例
import json
d={'a':1,'b':2}
ret = json.dumps(d)#序列化
print(ret,type(ret))
dic=json.loads(ret)#反序列化
print(dic,type(dic))

列表示例
import json
d=['a',1,'b','2']
ret = json.dumps(d)#序列化
print(ret,type(ret))
dic=json.loads(ret)#反序列化
print(dic,type(dic))

json dump load 文件句柄的事例
import json
data = {'a':['1','2'],'s':'3','age':16}
with open('json_sample','w',encoding='utf-8') as f:json.dump(data,f)#句柄序列化
with open('json_sample','r',encoding='utf-8') as f:print(json.load(f))#句柄反序列化

json & pickle 模块

用于序列化的两个模块

  • json,用于字符串 和 python数据类型间进行转换
  • pickle,用于python特有的类型 和 python的数据类型间进行转换

Json模块提供了四个功能:dumps、dump、loads、load

import json
dic = {'k1':'v1','k2':'v2','k3':'v3'}
str_dic = json.dumps(dic)  #序列化:将一个字典转换成一个字符串
print(type(str_dic),str_dic)  #<class 'str'> {"k3": "v3", "k1": "v1", "k2": "v2"}
#注意,json转换完的字符串类型的字典中的字符串是由""表示的

dic2 = json.loads(str_dic)  #反序列化:将一个字符串格式的字典转换成一个字典
#注意,要用json的loads功能处理的字符串类型的字典中的字符串必须由""表示
print(type(dic2),dic2)  #<class 'dict'> {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}
list_dic = [1,['a','b','c'],3,{'k1':'v1','k2':'v2'}]
str_dic = json.dumps(list_dic) #也可以处理嵌套的数据类型
print(type(str_dic),str_dic) #<class 'str'> [1, ["a", "b", "c"], 3, {"k1": "v1", "k2": "v2"}]
list_dic2 = json.loads(str_dic)
print(type(list_dic2),list_dic2) #<class 'list'> [1, ['a', 'b', 'c'], 3, {'k1': 'v1', 'k2': 'v2'}]

loads和dumps

loads和dumps

import json
f = open('json_file','w')
dic = {'k1':'v1','k2':'v2','k3':'v3'}
json.dump(dic,f)  #dump方法接收一个文件句柄,直接将字典转换成json字符串写入文件
f.close()f = open('json_file')
dic2 = json.load(f)  #load方法接收一个文件句柄,直接将文件中的json字符串转换成数据结构返回
f.close()
print(type(dic2),dic2)load和dump

load和dump

import json
data = {'username':['李华','二愣子'],'sex':'male','age':16}
json_dic2 = json.dumps(data,sort_keys=True,indent=2,separators=(',',':'),ensure_ascii=False)
print(json_dic2)

json的格式化输出


pickle模块提供了四个功能:dumps、dump(序列化,存)、loads(反序列化,读)、load  (不仅可以序列化字典,列表...可以把python中任意的数据类型序列化

import pickle
dic = {'k1':'v1','k2':'v2','k3':'v3'}
str_dic = pickle.dumps(dic)
print(str_dic)  #一串二进制内容

dic2 = pickle.loads(str_dic)
print(dic2)    #字典import time
struct_time  = time.localtime(1000000000)
print(struct_time)
f = open('pickle_file','wb')
pickle.dump(struct_time,f)
f.close()f = open('pickle_file','rb')
struct_time2 = pickle.load(f)
print(struct_time2.tm_year)

pickle

这时候机智的你又要说了,既然pickle如此强大,为什么还要学json呢?
这里我们要说明一下,json是一种所有的语言都可以识别的数据结构。
如果我们将一个字典或者序列化成了一个json存在文件里,那么java代码或者js代码也可以拿来用。
但是如果我们用pickle进行序列化,其他语言就不能读懂这是什么了~
所以,如果你序列化的内容是列表或者字典,我们非常推荐你使用json模块
但如果出于某种原因你不得不序列化其他的数据类型,而未来你还会用python对这个数据进行反序列化的话,那么就可以使用pickle


二 模块

1 什么是模块?

常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀。

但其实import加载的模块分为四个通用类别: 

  1 使用python编写的代码(.py文件)

  2 已被编译为共享库或DLL的C或C++扩展

  3 包好一组模块的包

  4 使用C编写并链接到python解释器的内置模块

2 为何要使用模块?

如果你退出python解释器然后重新进入,那么你之前定义的函数或者变量都将丢失,因此我们通常将程序写到文件中以便永久保存下来,需要时就通过python test.py方式去执行,此时test.py被称为脚本script。

随着程序的发展,功能越来越多,为了方便管理,我们通常将程序分成一个个的文件,这样做程序的结构更清晰,方便管理。这时我们不仅仅可以把这些文件当做脚本去执行,还可以把他们当做模块来导入到其他的模块中,实现了功能的重复利用,

3.如何使用模块?

3.1    import

示例文件:自定义模块my_module.py,文件名my_module.py,模块名my_module

在一行导入多个模块  import sys,os,re

3.2   from ... import...

对比import my_module,会将源文件的名称空间'my_module'带到当前名称空间中,使用时必须是my_module.名字的方式

而from 语句相当于import,也会创建新的名称空间,但是将my_module中的名字直接导入到当前的名称空间中,在当前名称空间中,直接使用名字就可以了、

from my_module import read1,read2

rom ... import...也支持as

from my_module import read1 as read

 

也支持导入多行

from my_module import (read1, read2,money)

转载于:https://www.cnblogs.com/chongdongxiaoyu/p/8494789.html

序列化、模块 day21相关推荐

  1. 4-20模块 序列化模块 hashlib模块

    1,模块,py文件就是模块,py之所以好用就是模块多. 2,模块的分类: 1,内置模块,python 安装时自带的模块 2,扩展模块,别人写好的,需要安装之后,可以直接使用.itchat微信模块, b ...

  2. python中常用的序列化模块_第六章 常用模块(5):python常用模块(序列化模块:pickle,json,shelve,xml)...

    6.3.7 序列化模块 (pickle,json,shelve,xml) 文件写入,数据传输时,我们都是以字符串形式写入的(因为字符串可以encode成bytes). 那其他类型(比如字典,列表等)想 ...

  3. python sys模块讲解_python模块之sys模块和序列化模块(实例讲解)

    sys模块 sys模块是与python解释器交互的一个接口 sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0),错误退出sys. ...

  4. time、random以及序列化模块

    一. time模块 在Python中,通常有这几种方式来表示时间: 时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.我们运行" ...

  5. 模块(sys/os/序列化模块)

    sys 模块: sys.path  返回模块的搜索路径,初始化时使用pythonpath环境变量的值 sys.modules   返回所有在当前这个python程序中导入的模块的 sys.exit   ...

  6. 序列化模块和hashlib模块

    一:序列化模块 1,什么叫序列化? 序列化就是将原本的字典.列表等内容转换成一个字符串.python中的序列化模块有 json,pickle,shelve. ps:能存储在文件中的一定是字符串或者是字 ...

  7. python序列化模块struct_Python-序列化模块-json-62

    序列化模块 什么叫序列化--将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化. 比如,我们在python代码中计算的一个数据需要给另外一段程序使用,那我们怎么给? 现在我们能想到的方法就是存 ...

  8. python内置json模块_python的常用内置模块之序列化模块json

    #什么叫序列化--将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化. '''比如,我们在python代码中计算的一个数据需要给另外一段程序使用,那我们怎么给? 现在我们能想到的方法就是存在文 ...

  9. os模块,序列化模块,json模块,pickle模块

    OS模块 把路径中不符合规范的/改成操作系统默认的格式 1 path = os.path.abspath("D:\dayday\day 19\3.py") 2 print(path ...

  10. python 序列化模块_Python进阶-XII serialize(序列化)、序列化模块

    一.serialize 序列化 1.什么叫序列化--将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化. 比如,我们在python代码中计算的一个数据需要给另外一段程序使用,那我们怎么给? 现 ...

最新文章

  1. 无线通信原理及协议栈(ZigBee、蓝牙等)解析
  2. 信息系统项目管理师优秀论文:论信息系统范围管理02
  3. P5644-[PKUWC2018]猎人杀【NTT,分治】
  4. C++---汉明距离
  5. finereport字段显示设置_如何在Excel中显示和编辑中文拼音字段
  6. 表单提交中文乱码_Java学习路线分享如何处理中文参数
  7. webservice wsdl 生成服务
  8. POJ 3268 Silver Cow Party 单向最短路
  9. 【Java】15分钟快速体验阿里Java诊断工具Arthas
  10. LeNet网络分类MINST数据集,附详细代码及注解和B站视频讲解
  11. 手顺解决 Foxmail7.2 无法搜索“主题”和“全文”,只能搜“发件人”和“收件人” 问题
  12. 学校技能节计算机专业方案,第十九届技能节展示方案
  13. SPHYSICS流体力学仿真模拟程序的动态链接库编译及C#混合编程方法
  14. Go语法·类型选择(type switch)
  15. 数字电路(2)门电路(一)
  16. ROC-RK3328-CC 开发板开箱和上手指南
  17. 你问我答:听说你做订阅号挣了 100W ?
  18. Candence/Allegro启动找不到cdn_XXXX.dll文件解决方法
  19. spring-data-redis 使用pipeline批量设置过期时间的bug
  20. 在Windows下使用vs2019编译libjpeg库

热门文章

  1. robotframework的学习笔记(十六)----robotframework标准库String
  2. 差分约束系统 POJ 3169 Layout
  3. zypper 工具详解
  4. hp eva 4400存储配置手记
  5. [Python] L1-014. 简单题-PAT团体程序设计天梯赛GPLT
  6. 蓝桥杯 ALGO-21算法训练 装箱问题 java版
  7. 质量标准、质量策略和质量责任的概念解释
  8. Java 用HTTP的方式发送JSON报文请求
  9. Java Servlet 和JSP教程(2)
  10. AI部署从EonStor GSi存储解决方案开始