python3 库,python3使用python2的库
泡菜是计算机编程语言库中常用的序列化工具,在计算机编程语言的新版本中,已在c中再次实现。被称为cPickle,性能更高。以下代码说明了如何使用泡菜库的典型界面。非常简单:
将泡菜作为泡菜导入
#转储和装载
#将内存对象倾销作为字符串,或将字符串负荷作为内存对象
极好的测试转储和加载() :
t={name: [v1 , v2]}
打印t
o=pickle.dumps(t)))。
打印o
打印len o:",Len(o))。
p=pickle.loads(o)))
打印p
对于最高_协议参数泡菜支持三种类型的协议.0,1,2 :
# http://堆栈溢出。com/questions/23582489/python-pickle-protocol-choice
#0: ascii协议,与早期版本的计算机编程语言兼容
# 1:二进制格式,与旧版本的计算机编程语言的兼容性
#2:在二进制格式、Python2.3或更高版本中首次更好地支持新系统类
ef test _ dumps _ and _ loads _ highest _ protocol():
打印最高_协议: ,泡菜.最高_协议
t={name: [v1 , v2]}
打印t
o=pickle.dumps(t,pickle .最高_协议).
打印len o:",Len(o))。
p=pickle.loads(o)))
打印p
#新式课堂
def test_new_sytle_class():
类(对象) :
def __init__(self,arg,**kwargs):
超级(TT,自我)。__init__))
self.arg=arg
self.kwargs=kwargs
默认(自己) :
打印self.arg
打印self.kwargs
# ascii协议
t=TT(测试,a=1,b=2))。
O1=pickle.dumps(t))。
打印一
打印O1 len:,len(O1))。
p=pickle.loads(O1))。
p.test())
#最高_协议改进了对新型班级的支持,从而提高了性能
O2=pickle.dumps(t,pickle .最高_协议).
打印O2 len:,len(O2))。
p=pickle.loads(O2))。
p.test())
#转储和装载
#序列化内存对象,并直接将其卸装到支持文件或文件接口的对象
对于转储,必须支持写接口并接受字符串(如斯特林吉奥)作为输入参数
对于负载,必须支持阅读接口,接受(同国际组织)国际组织输入参数,同时支持无输入参数的阅读线接口,如斯特林乔
#使用文件,ASCII编码
极好的测试转储和加载文件() :
t={name: [v1 , v2]}
# ascii格式
withopen(test.txt , w )作为fp:
pickle.dump(t,fp))。
withopen(test.txt , r )作为fp:
p=pickle.load(FP))。
打印p
#使用文件、二进制代码
def测试转储和加载文件最高协议():
t={name: [v1 , v2]}
用打开( test.bin , wb )作为fp:
pickle.dump(t,fp,pickle .最高_协议).
用打开( test.bin , rb )作为fp:
p=pickle.load(FP))。
打印p
斯特林乔,使用二进制代码
def test _ dump _ and _ load _ with _ stringio():
导入字符串
t={name: [v1 , v2]}
fp=StringIO .斯特林乔(
pickle.dump(t,fp,pickle .最高_协议).
FP.seek(0))。
p=pickle.load(FP))。
打印p
fp.close())
#使用自定义类
#在这里,只要实现写、读、读行接口,
可以用作倾倒、装载的文件参数
def测试转储和加载用户定义类():
导入字符串
消防级(对象) :
def __init__(self):
self.buf=StringIO .斯特林乔(
efwrite(self,s):
自我缓冲写入
打印镜头:",镜头"。
efread(self,n):
returnself.buf.read(n))。
仰角指示器读我(自己) :
返回self.buf.readline(
defseek(self,pos,mod=0):
returnself.buf.seek(pos,mod))。
定义关闭(自身) :
self.buf.close(
fp=FF()
t={name: [v1 , v2]}
pickle.dump(t,fp,pickle .最高_协议).
FP.seek(0))。
p=pickle.load(FP))。
打印p
fp.close())
# Pickler/Unpickler
#pickler(file[,protocol.dump ) obj)等效于pickle.dump (obj,file(,protocol))。
#unpickler(文件)。负载)等效于泡菜。上菜
# Pickler/Unpickler的封装性更好,可以很容易地替换文件
def test_pickler_unpickler():
t={name: [v1 , v2]}
f=file(test.bin , wb )。
pick=pickle.pickler(f,pickle .最高_协议).
Pick.dump(t))。
f.close()
f=file(test.bin , rb )。
unpick=pickle.unpickler(f))。
p=unpick.load())
打印p
f.close()
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。