Python学习笔记(八)
Python学习笔记(八)
一、对象持久化
(一)pickle 模块
1、概述
pickle模块为Python对象结构的序列化和反序列化实现了一个基本但强大的算法。 “Pickling”是将Python对象层次结构转换为字节流的过程,“unpickling”是相反的操作,即字节流转换回对象层次结构。
2、常用方法
(1)序列化为字符串pickle.dumps(obj) 将对象序列化为字符串
pickle.loads(str) 将字符串反序列化为对象
import pickle
p = {"name":"Tom", "age":18}
# 对象序列化为字符串
str_p = pickle.dumps(p)
print(str_p)
# 字符串反序列化为对象
p_tmp = pickle.loads(str_p)
print(p_tmp)
(2)序列化到文件pickle.dump(obj, file) 将对象序列化到文件
pickle.load(file) 将文件反序列化为对象
import pickle
p = {"name":"Tom", "age":18}
# 对象序列化到文件
pickle.dump(p, open("a.txt", "wb"))
# 文件反序列化为对象
p_tmp = pickle.load(open("a.txt", "rb"))
print(p_tmp)
(二)shelve 模块
1、概述
shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式
2、常用方法
(1)创建shelve文件db = shelve.open('path')
(2)序列化到文件db['key'] = obj
(3)序列化的对象数量len(db)
(4)删除序列化内容del db['key']
(三)对比 pickle 和 shelve
pickle一个文件只能很方便的序列一个对象,如果需要一个文件序列化多个对象的话使用shelve模块,因为shelve模块是k, v型的,可以更方便一个文件存储多个对象
二、字符串
(一)类型
- str 字符串
- bytes 字节
- bytearray 字节数组
(二)基础概念
名称 | 概述 |
---|---|
字符集 | 又称为编码字符集, 是一个包含字符表中每一个字符和对应的整数映射关系的集合。 |
码位值 | 一个字符在某个字符集中的映射的值,一般是一个整数。 |
字符编码 | 是把一个码位值转换为用于存储和传输的2进制序列的方式。 |
编码 | 转换字符为字节形式 |
解码 | 字节形式转换为字符 |
(三)字符编码
1、ASCII
存储在一个Byte
0~127
2、latin-1
存储在一个Byte
128~255
3、UTF-8
可变字节
0~127:使用单字节
128~2047:双字节存储
大于 2047:3~4Byte
4、UTF-16
2Byte存储字符(另加2Byte作为标识)
5、UTF-32(4Byte)
(四)内置函数
1、ord():获取字符码值
print(ord('a')) # 97
2、chr():获取码值对应的字符
print(chr(97)) # a
3、str.encode(‘编码’):将特定字符串编码
s = "abc"
print(s.encode("utf8"))
4、bytes.decode(‘编码’):将字符编码解码为字符文本
s = "abc"
b = s.encode("utf8")
print(b)
print(b.decode("utf8"))
(五)类型转换
1、转化为bytes方法1: 手动声明 b""
方法2: 字符串编码 str.encode()
方法2: 构造函数 bytes()
2、转换为bytearray构造函数: bytearray('字符串','字符编码')
3、转换为字符串bytes.decode('字符编码')
bytearray.decode('字符编码')
(六)BOM 处理
1、简介
字节顺序标记(英语:byte-order mark,BOM)是一个有特殊含义的统一码字符,码点为U+FEFF。当以UTF-16或UTF-32来将UCS/统一码字符所组成的字符串编码时,这个字符被用来标示其字节序。经常被用于区分是否为UTF编码。
2、使用(添加或不显示标记)open('文件名','打开方式',encoding="字符编码-sig")
with open("a.txt", "w", encoding="utf-8-sig") as f:
f.write("Hello world")
with open("a.txt", "r", encoding="utf-8-sig") as f:
print(f.read())
上一篇: 电脑软件卸不掉教你二种电脑卸掉软件的方法
下一篇: UG怎么使用旋转命令绘制压套?
推荐阅读
-
Python中的异常处理相关语句基础学习笔记
-
Python常用的内置序列结构(列表、元组、字典)学习笔记
-
html5中canvas学习笔记1-画板的尺寸与实际显示尺寸
-
html5中canvas学习笔记2-判断浏览器是否支持canvas
-
PHP 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约式编程
-
7.1(java学习笔记)InetAddress&InetScoketAddress
-
PHP 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception
-
PHP 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
-
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
-
Python中集合的内建函数和内建方法学习教程