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就好了,这个值得注意一下。

  • 相关阅读:
    PHP的后期静态绑定
    php的clone 浅拷贝
    python 从文件导入分类
    Yii2 主从 数据库
    什么是 jsonp ?
    为speedphp最新版添加 仿Yii 的简易版 数据验证 支持不同场景,自定义回调
    redis入门指南-安装redis
    composer -vvv
    依赖注入
    yii2-user
  • 原文地址:https://www.cnblogs.com/juncaoit/p/9570683.html
Copyright © 2011-2022 走看看