zoukankan      html  css  js  c++  java
  • 016 pickle

      英文也是泡菜的意思。

      学完了,还是感觉这个模块是蛮不错的,对多数据保存到文件中,然后在使用的时候,再读取出来,让程序闲的更加优雅,简洁。

    一:介绍

    1.为什么使用

      在开篇已经介绍了,但是我这里粘贴一下别人对pickle的看法。

      pickle是python语言的一个标准模块,安装python后已包含pickle库,不需要单独再安装。

      那么为什么需要序列化和反序列化这一操作呢?

      1.便于存储。序列化过程将文本信息转变为二进制数据流。这样就信息就容易存储在硬盘之中,当需要读取文件的时候,从硬盘中读取数据,然后再将其反序列化便可以得到原始的数据。在Python程序运行中得到了一些字符串、列表、字典等数据,想要长久的保存下来,方便以后使用,而不是简单的放入内存中关机断电就丢失数据。python模块大全中的Pickle模块就派上用场了,它可以将对象转换为一种可以传输或存储的格式。

      2.便于传输。当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把這个对象转换为字节序列,在能在网络上传输;接收方则需要把字节序列在恢复为对象。

    2.保存

      pickle模块是以二进制的形式序列化后保存到文件中(保存文件的后缀为”.pkl”),不能直接打开进行预览。

      而python的另一个序列化标准模块json,则是human-readable的,可以直接打开查看(例如在notepad++中查看)。

    二:操作

    1.思路

      数据不写多了,这里只写了一个列表,做演示。

      主要分为两个阶段,一个是存放数据到文件。

      第二个阶段是从文件中读取数据,获取使用。

    2.程序

     1 ###第一阶段,属于腌制
     2 import pickle
     3 data_list=[1,2,3,4,5,6,7,8,'aaaa',[1,8,'a']]
     4 
     5 file1=open('data.pkl','wb')
     6 pickle.dump(data_list, file1)
     7 file1.close()
     8 
     9 ###第二阶段,属于使用
    10 file2=open('data.pkl','rb')
    11 newdata=pickle.load(file2)
    12 print(newdata)

    3.效果、

      

    4.遇到的问题

      module 'pickle' has no attribute 'dump'

      解决方式:

        python package中的名字写成了pickle,后来修改成pickleDemo就好了,这个值得注意一下。

  • 相关阅读:
    log4j基本使用方法
    Spring MVC中页面向后台传值的几种方式
    JXL操作Excel
    模板
    url&视图
    Git for PyCharm
    ServletConfig和ServletContext
    Exception和IOException之间的使用区别
    java学习一目了然——异常必知
    java学习一目了然——IO
  • 原文地址:https://www.cnblogs.com/juncaoit/p/9570683.html
Copyright © 2011-2022 走看看