python自动化开发-5a

python的常用模块

 

  在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护。为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在Python中,一个.py文件就称之为一个模块(Module)。

  使用模块的好处:首先,大大提高了代码的可维护性。其次,编写代码不必从零开始。当一个模块编写完毕,就可以被其他地方引用。我们在编写程序的时候,也经常引用其他模块,包括Python内置的模块和来自第三方的模块。 

pickle模块和json模块

  pickle和json是用于序列化的两个模块

  序列化:我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化 

  序列化的作用:1.持久保存状态;2.跨平台数据交互。

    持久保存状态:内存是无法永久保存数据的,当程序运行了一段时间,我们断电或者重启程序,内存中关于这个程序的之前一段时间的数据(有结构)都被清空了;在断电或重启程序之前将程序当前内存中所有的数据都保存下来(保存到文件中),以便于下次程序执行能够从文件中载入之前的数据,然后继续执行,这就是序列化。举个通俗易懂的例子来说,你玩某个网络游戏闯到了第13关,你想保存游戏状态,关机走人,下次再玩,还能从上次的位置开始继续闯关。或如,虚拟机状态的挂起等。

    跨平台数据交互序列化之后,不仅可以把序列化后的内容写入磁盘,还可以通过网络传输到别的机器上,如果收发的双方约定好实用一种序列化的格式,那么便打破了平台/语言差异化带来的限制,实现了跨平台数据交互。

  pickle模块

    pickle是python中独有的序列化模块,所谓独有,就是指不能和其他编程语言的序列化进行交互,因为pickle将数据对象转化为bytes。pickle模块提供了四个功能:dumps、dump、loads、load。dumps和dump都是进行序列化,而loads和load则是反序列化。  

     dumps将所传入的变量的值序列化为一个bytes,然后,就可以将这个bytes写入磁盘或者进行传输;而dump则更加一步到位,在dump中可以传入两个参数,一个为需要序列化的变量,另一个为需要写入的文件。

    例子:dumps和loads      

1 import pickle
2 i=[23,46,89]
3 res=pickle.dumps(i)
4 res1=pickle.loads(res)
5 print("序列化:",res)
6 print("反序列化:",res1)
View Code

运行结果:

序列化: b'\x80\x03]q\x00(K\x17K.KYe.'
反序列化: [23, 46, 89]

 

   例子:dump和load    

 1 import pickle
 2 d=[1,2,3,4,5]
 3 with open("test1","wb") as f:
 4         pickle.dump(d,f)
 5 with open("test1","rb") as f:
 6     res1=f.read()
 7 print("序列化:",res1)
 8 with open("test1","rb") as f:
 9         res=pickle.load(f)
10 print("反序列化:",res)
View Code   

运行结果:  

  序列化: b'\x80\x03]q\x00(K\x01K\x02K\x03K\x04K\x05e.'
  反序列化: [1, 2, 3, 4, 5]

  

json模块

  json中的方法和pickle中差不多,也是dumps,dump,loads,load。使用上也没有什么区别,区别在于,json中的序列化后格式为字符。可以被所有语言读取,也可以方便地存储到磁盘或者通过网络传输。JSON不仅是标准格式,并且比XML更快,而且可以直接在Web页面中读取,非常方便。

  

 

 

posted on 2017-02-20 10:43  永远的大空翼  阅读(126)  评论(0编辑  收藏  举报