zoukankan      html  css  js  c++  java
  • 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页面中读取,非常方便。

      

     

  • 相关阅读:
    计算机网络概述
    虚拟机网卡配置
    元类
    反射和内置方法
    面向对象的三大特性
    MYSQL中EXISTS的用法
    Guava中的常见集合操作用法
    集合操作交并补的三种Java实现
    P9 get和resize操作(Java 13)
    P8 Java 13中 HashMap的 put方法
  • 原文地址:https://www.cnblogs.com/renyongbin/p/6418482.html
Copyright © 2011-2022 走看看