常用模块02

1. 什么是序列化

  • 在python中存在三种序列化的方案
  1. pickle. 可以将我们python中的任意数据类型转化成bytes并写入到⽂件中. 同样也可以把文件中写好的bytes转换回我们python的数据. 这个过程被称为反序列化
  2. shelve. 简单另类的一种序列化的方案.
  3. json. 将python中常用的字典, 列表转化成字符串. 是目前前后端数据交互使用频率最高的一种数据格式.

2. pickle(重点)

python对象写入到文件中的一种解决⽅案.但是写入到文件的是bytes

import pickle
class Cat:def __init__(self, name, age):self.name = nameself.age = agedef catchMouse(self):print(self.name, "抓老鼠")c = Cat("jerry", 18)
bs = pickle.dumps(c) # 序列化一个对象.
print(bs) # ⼀堆⼆进制. 看不懂
cc = pickle.loads(bs) # 把二进制反序列化成我们的对象
cc.catchMouse() # 猫依然是猫. 还可以抓老鼠

  • pickle中的dumps可以序列化一个对象.
  • loads可以反序列化一个对象.
  • dump还可以直接 把一个对象写入到文件中

3. shelve

shelve提供python的持久化操作

import shelve
shelf = shelve.open("sylar")
# shelf["jay"] = "周杰伦"
print(shelf['jay'])
shelf.close()
s = shelve.open("sylar")
# s["jay"] = {"name":"周杰伦", "age":18, "hobby":"哄小孩"}
print(s['jay'])
s.close()

下面是测试

s = shelve.open("sylar")
s['jay']['name'] = "胡辣汤" # 尝试改变字典中的数据
s.close()
s = shelve.open("sylar")
print(s['jay']) # 并没有改变
s.close()

解决方案:
s = shelve.open("sylar", writeback=True)
s['jay']['name'] = "胡辣汤" # 尝试改变字典中的数据
s.close()
s = shelve.open("sylar")
print(s['jay']) # 改变了.
s.close()

writeback=True可以动态的把我们修改的信息写入到文件中

s = shelve.open("sylar", writeback=True)
del s['jay']
s.close()
s = shelve.open("sylar")
print(s['jay']) # 报错了, 没有了
s.close()

s = shelve.open("sylar", writeback=True)
s['jay'] = "周杰伦"
s['wlj'] = "王力宏"
s.close()
s = shelve.open("sylar")
for k in s: # 像字典那样遍历print(k)

print(s.keys()) # 拿到所有key的集合
for k in s.keys():
print(k)

for k, v in s.items(): # 像字典一样操作
print(k, v)
s.close()

4. json(重点)

# ----- loads  转换字符串到json ----------------
s1 = '{"1":"毒液","2":"雷神","3":"海王","4":false,"5":null}'
d = json.loads(s1)
print(d)

# --------------字符串 转 字典  进文件----------------dic1 = {"1":"毒液","2":"雷神","3":"海王","4":False,"5":None,"6":{"想看":"没钱","能看":"没时间"}}
f = open("du.json",mode="w",encoding="utf-8")
json.dump(dic1,f,ensure_ascii=False,indent=4)
f = open("du.json",mode="r",encoding="utf-8")
d = json.load(f)
print(d)

# -------------json  函数传入返回 字典形式---------
class Man():def __init__(self,firstname,lastname):self.firstname = firstnameself.lastname = lastnamePerson = Man("海格力斯","王五")def func(obj):return {"first":obj.firstname,"last":obj.lastname}
s = json.dumps(Person,default=func,ensure_ascii=False)
print(s)

#-----------------字符串 字典 返回  对象------------
class Man():def __init__(self,firstname,lastname):self.firstname = firstnameself.lastname = lastname
dic = '{"firstname":"海格力斯","lastname":"王五"}'
def func(dic):return Man(dic["firstname"],dic["lastname"])s = json.loads(dic,object_hook=func)
print(s.firstname)

转载于:https://www.cnblogs.com/NATO/p/9985166.html

Python 21 常用模块02相关推荐

  1. Python自学——python的常用模块

    Python学习--python的常用模块 原文作者:佛山小程序员 原文链接:https://blog.csdn.net/weixin_44192923/article/details/8656325 ...

  2. 数据采集与清洗基础习题(二)Python爬虫常用模块,头歌参考答案

    数据采集习题参考答案,会持续更新,点个关注防丢失.为了方便查找,已按照头歌重新排版,朋友们按照头歌所属门类查找实训哦,该篇为Python爬虫常用模块. 创作不易,一键三连给博主一个支持呗. 文章目录 ...

  3. 【Python】常用模块安装命令

    [Python]常用模块安装命令 Python常用模块安装命令 pylab模块 No module named 'apkutils' No module named 'win32api' Python ...

  4. 数据分析的基础:前言、概念、应用、分析方法、分析工具、基本流程、Python数据分析常用模块

    文章目录 一.前言 1.数据价值 2.数据分析之路 二.数据分析的概念 三.数据分析的应用 四.数据分析方法 1.概念 2.详解 五.数据分析工具 六.数据分析的基本流程 七.Python数据分析常用 ...

  5. Python的常用模块

    目录: time模块 random()模块 os模块 sys模块 Json模块 hashlib 模块 subprocess模块 paramiko模块 re模块 time模块 time()模块中的重要函 ...

  6. Python学习 - 常用模块(二)

    目录 一. 常用模块 - hashlib 二. 常用模块 - hmac 三. 常用模块 - logging 四. 常用模块 - re 五. 常用模块 - requests 六. 常用模块 - para ...

  7. python的常用函数模块_(5)Python的常用模块函数

    python 的常用系统函数,random模块函数,time模块函数和calendar模块函数. 1 random模块函数. 随机数种字,使用seed(x)函数可以设置随机数生成器的种子,通常在调用其 ...

  8. python自动化常用模块_Python自动化之常用模块

    1 time和datetime模块 #_*_coding:utf-8_*_ __author__ = 'Alex Li' import time # print(time.clock()) #返回处理 ...

  9. python colorama_Python常用模块—— Colorama模块

    简介 Python的Colorama模块,可以跨多终端,显示字体不同的颜色和背景,只需要导入colorama模块即可,不用再每次都像linux一样指定颜色. 1. 安装colorama模块 pip i ...

最新文章

  1. 是时候扔掉Postman了,又一个被低估的IDEA插件出来了...
  2. 一个JQuery发送ajax请求
  3. 实训23 2018.4.27
  4. 中国SaaS死或生之二:ERP两大邪术,尽出歪门邪路
  5. 160个Crackme009
  6. AJAX——AJAX请求递归
  7. select read write
  8. 公式之美:打通复杂思维的任督二脉
  9. 解决w3wp.exe内存占用问题[转载]
  10. 使用kibana可视化报表实时监控你的应用程序,从日志中找出问题,解决问题
  11. python数据存储系列教程——xls文件的读写、追加(xlwt、xlwt、xlutils)
  12. cordova 打包vue 集成的app , router-view 默认首页白屏
  13. 【Pix4d精品教程】pix4d mapper相机未校准后手动添加连接点完美案例图文教程
  14. 毕设-基于JavaWeb在线学习平台
  15. win10配置计算机时强制关机,win10系统强制关机后开不了机了的解决方案
  16. “赋能”企业,数加服装ERP智助企业乘风破浪
  17. 判定被7整除的简易方法
  18. ASP.NET MVC里ModelState.IsValid总是true或者总是false
  19. 【报告分享】2020年中国宠物消费市场分析报告-IT桔子(附下载)
  20. 【奇奇怪怪小知识】系统盘(C盘)持续发出“救救我”信号(C盘仅剩不足10G,爆红), 操作过后直接腾出近20G

热门文章

  1. 简明python教程英语版_简明Python教程(A Byte of Python中文版)
  2. 构建信用卡客户风险识别模型
  3. VBScript MsgBox 函数
  4. 使用ELK分析Windows事件日志
  5. CS131学习笔记(lecture5)
  6. [LeetCode]65. 有效数字
  7. Identifying Medical Diagnoses and Treatable Diseases by Image-Based Deep Learning
  8. java通过端口1433连接到主机_通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败。...
  9. 计算机网络什么叫流量控制,计算机网络(十一)-数据链路层-流量控制
  10. access的ole对象换成mysql_C# 操作Access的Ole对象[转]