不知道大家在开发的过程中有没有遇到过在程序启动的过程中要加载一些资源。
比如:
从数据库读取某张静态表的数据或者从服务器下载份静态文件.....
如果程序每次启动的过程中都去读取数据或者下载文件,将会重复做无用功,而且当文件过大时,读取也是十分耗时的。在这种情况下,可以使用python的pickle模块
pickle 可以存储的类型数据
1.所有python支持的原生类型:布尔值、整数、浮点数、复数、字符串、字节、None。
2.由任何原生类型组成的列表、元祖、字典和集合。
3,函数、类、类的实例
pickle模块中常用的方法:
1.pickle.dump(obj,file,protocol=None,)
obj:必填,表示将要封装的对象
file:必填,表示obj要写入的文件对象,file必须已二进制可写模式打开,即“wb”
可选参数protocol表示告知pickler使用的协议,支持的协议有0,1,2,3,默认的协议是添加在Python 3中的协议3。
2. pickle.load(file,*,fix_imports=True, encoding="ASCII", errors="strict")
必填参数file必须以二进制可读模式打开,即“rb”,其他都为可选参数
3. pickle.dumps(obj):以字节对象形式返回封装的对象,不需要写入文件中
4. pickle.loads(bytes_object): 从字节对象中读取被封装的对象,并返回
pickle模块可能出现三种异常:
1. PickleError:封装和拆封时出现的异常类,继承自Exception
2. PicklingError: 遇到不可封装的对象时出现的异常,继承自PickleError
3. UnPicklingError: 拆封对象过程中出现的异常,继承自PickleError
网友评论