python的pickle模块,python中pickle模块

  python的pickle模块,python中pickle模块

  

  json模块和pickle模块的用法

  在python中,pickle和json两个模块可以用来序列化数据。

  其中包括:

  Json可用于字符串或字典与python数据类型之间的序列化和反序列化。

  Pickle可用于特定于python的类型和python数据类型之间的序列化和反序列化。

  json模块的用法

  1.检查json模块中的方法:

  importjson

  目录(json)

  [ jsondecodererror , JSONDecoder , JSONEncoder , __all__ , __author__ , __builtins__ , __cached__ , __doc__ ,

  “__file__”、“__loader__”、“__name__”、“__package__”、“__path__”、“__spec__”、“__version__”、“_default_decoder”,

  _ default _ encoder , decoder , dump , dumps , encoder , load , loads , scanner] 2。JSON模块的常用函数:转储、转储、加载、加载

  3.使用json.dumps方法,可以将字典等数据格式化成字符串,方便其他编程语言调用。

  dic1={k1:v1 , k2:v2}

  res=json.dumps(dic1)

  打印(分辨率)

  {k1:v1 , k2:v2}

  打印(类型(分辨率))

  类 str 的格式化字符串看起来和原来的一样,但是当你看格式化类型的时候,你会发现它是一个经过json模块处理过的字符串。

  4.可以使用json.loads进行反序列化。

  打印(类型(res2))

  类别“字典”

  打印(分辨率)

  {k1:v1 , k2:v2}

  打印(类型(分辨率))

  类别“str”

  res2=json.loads(res)

  打印(res2)

  {k1 : v1 , k2 3360 v2} 5。还可以使用json.dump方法将字典等数据类型序列化到一个文件中,等待其他程序调用它。

  importjson

  dic1={k1:v1 , k2:v2}

  withopen(f1 , wquo

  t;)asf:

  json.dump(dic1,f)运行上面的代码,可以看到在同级目录下,生成一个名为“f1”的文件,打开f1文件,其内容为:

  

{"k1":"v1","k2":"v2"}
6.可以使用json.load方法读取文件f1中的内容:

  

importjson

  withopen("f1")asf:

  res=json.load(f)

  print(res)

  print(type(res))

打印反序列化后的数据及其类型,得到的结果为:

  

{'k1':'v1','k2':'v2'}

  <class'dict'>

相关推荐:《Python视频教程》

  pickle模块的用法

  1.查看pickle模块内的方法:

  

>>>importpickle

  >>>dir(pickle)

  ['ADDITEMS','APPEND','APPENDS','BINBYTES','BINBYTES8','BINFLOAT','BINGET','BININT','BININT1','BININT2',

  'BINPERSID','BINPUT','BINSTRING','BINUNICODE','BINUNICODE8','BUILD','DEFAULT_PROTOCOL','DICT','DUP',

  'EMPTY_DICT','EMPTY_LIST','EMPTY_SET','EMPTY_TUPLE','EXT1','EXT2','EXT4','FALSE','FLOAT','FRAME',

  'FROZENSET','FunctionType','GET','GLOBAL','HIGHEST_PROTOCOL','INST','INT','LIST','LONG','LONG1','LONG4',

  'LONG_BINGET','LONG_BINPUT','MARK','MEMOIZE','NEWFALSE','NEWOBJ','NEWOBJ_EX','NEWTRUE','NONE','OBJ',

  'PERSID','POP','POP_MARK','PROTO','PUT','PickleError','Pickler','PicklingError','PyStringMap','REDUCE',

  'SETITEM','SETITEMS','SHORT_BINBYTES','SHORT_BINSTRING','SHORT_BINUNICODE','STACK_GLOBAL','STOP','STRING',

  'TRUE','TUPLE','TUPLE1','TUPLE2','TUPLE3','UNICODE','Unpickler','UnpicklingError','_Framer','_Pickler',

  '_Stop','_Unframer','_Unpickler','__all__','__builtins__','__cached__','__doc__','__file__','__loader__',

  '__name__','__package__','__spec__','_compat_pickle','_dump','_dumps','_extension_cache','_extension_registry',

  '_getattribute','_inverted_registry','_load','_loads','_test','_tuplesize2code','bytes_types','codecs',

  'compatible_formats','decode_long','dispatch_table','dump','dumps','encode_long','format_version','io',

  'islice','load','loads','maxsize','pack','re','sys','unpack','whichmodule']

2.想查看某一个方法的帮助文档:

  

help(pickle.modules)
比如,我想知道pickle下的dump模块怎么用:

  

help(pickle.dump)
就可以得到pickle.dump方法的帮助文档

  3.pickle模块常用的方法有:dumps,loads,dump,load

  4.使用pickle.dumps对数据进行序列化操作

  

importpickle

  l1=[1,2,3,4,5]

  t1=(1,2,3,4,5)

  dic1={"k1":"v1","k2":"v2","k3":"v3"}

  res_l1=pickle.dumps(l1)

  res_t1=pickle.dumps(t1)

  res_dic=pickle.dumps(dic1)

  print(res_l1)

  print(res_t1)

  print(res_dic)

对数据进行序列化操作后,打印数据得到结果为:

  

b'\x80\x03]q\x00(K\x01K\x02K\x03K\x04K\x05e.'

  b'\x80\x03(K\x01K\x02K\x03K\x04K\x05tq\x00.'

  b'\x80\x03}q\x00(X\x02\x00\x00\x00k1q\x01X\x02\x00\x00\x00v1q\x02X\x02\x00\x00\x00k2q\x03X\x02\x00

  \x00\x00v2q\x04X\x02\x00\x00\x00k3q\x05X\x02\x00\x00\x00v3q\x06u.'

可以看到是一堆二进制乱码

  5.使用pickle.loads进行反序列化操作

  

importpickle

  l1=[1,2,3,4,5]

  t1=(1,2,3,4,5)

  dic1={"k1":"v1","k2":"v2","k3":"v3"}

  res_l1=pickle.dumps(l1)

  res_t1=pickle.dumps(t1)

  res_dic=pickle.dumps(dic1)

  print(pickle.loads(res_l1),type(pickle.loads(res_l1)))

  print(pickle.loads(res_t1),type(pickle.loads(res_t1)))

  print(pickle.loads(res_dic),type(pickle.loads(res_dic)))

打印序列化后的数据及其类型,得到结果为:

  

[1,2,3,4,5]<class'list'>

  (1,2,3,4,5)<class'tuple'>

  {'k1':'v1','k2':'v2','k3':'v3'}<class'dict'>

可以看到序列化之前是什么类型的数据,反序列化后其数据类型不变。

  6.可以用pickle.dumps把列表,元组或字典序列化进一个文件中以实现永久保存。

  把列表l1序列化进一个文件f1中:

  

importpickle

  l1=[1,2,3,4,5]

  t1=(1,2,3,4,5)

  dic1={"k1":"v1","k2":"v2","k3":"v3"}

  withopen("f1","wb")asf:

  pickle.dump(l1,f)

7.可以使用pickle.load对文件f1进行反序列化,得到文件f1里保存的数据

  

importpickle

  withopen("f1","rb")asf:

  res=pickle.load(f)

  print(res)

反序列化之后,打印数据及其类型可以看到:

  

[1,2,3,4,5]

  <class'list'>

使用同样的方法,也可以把元组,或字典序列化进一个文件中以实现永久保存。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

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