python3 库,python3使用python2的库

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: