pickle模块数据对象持久化操作,Python使用pickle模

作者:计算机知识

Bwin必赢亚洲,本文实例讲述了Python使用pickle模块积存对象操作。分享给大家供大家仿照效法,具体如下:

pickle模块数据对象持久化操作,Python使用pickle模块实现序列化功能示例。近年来在看源码,看到那几个模块很咋舌,认为很庞大的模块

本文实例讲述了Python使用pickle模块实现种类化效能。分享给大家供大家参照他事他说加以调查,具体如下:

import time
import hashlib
import pickle
import os
class Info():
    def __init__(self):
        self.create_time=time.time()

    def md5(self):
        m=hashlib.md5()
        m.update(str(self.create_time).encode('utf-8'))
        return m.hexdigest()
    def save(self):
        if not os.path.exists('md5'):
            os.mkdir('md5')
        os.chdir('md5')
        print(self.md5())
        with open(self.md5(),'wb') as f:
            pickle.dump(self,f)
    @staticmethod
    def read():
        path=r'C:UsersAdministrator模块md5'
        res=os.listdir(path)
        for item in res:
            file_path=r'%s%s'%(path,item)
            # print(file_path)
            with open(file_path,'rb') as f:
                # print(f)
                try:
                    obj=pickle.load(f)
                except Exception as e:
                    pass
                print(obj.create_time)

i=Info()
print(i.md5())
i.save()
i.read()

明确,当大家要求仓库储存数据的时候,就供给用到重定向。不过,那几个都是积攒轻易的数据类型,那么当大家必要仓库储存二个类的实例的时候该怎么存储吗?

首要用途:持久保存数据-->python运转进程中的数据将其短期保存

Python内置的pickle模块能够将Python对象系列成字节流,也能够把字节流反类别成靶子。

 

实则,咱们需求运用二个模块———pickle,翻译为梅菜坛子

借图:

import pickle
class Student:
  def __init__(self, name, age):
    self.name = name
    self.age = age
  def say(self):
    print("I am", self.name)
>>> t = Student('Tom', 23)
>>> t.say()
I am Tom
>>>
>>> save_path = './tom_msg'
>>> with open(save_path, 'wb') as f:    # 字节流写入
...   pickle.dump(t, f)      # 序列化数据保存在文件中
>>>
>>> with open(save_path, 'rb') as f:    # 字节流读出
...   after_t = pickle.load(f)    # 读取文件信息反序列化成对象
...
>>> after_t.__dict__
{'name': 'Tom', 'age': 23}
>>> after_t.say()
I am Tom
>>>
>>>
>>> l = Student('Lisa', 23)
>>> serialized = pickle.dumps(l)
>>> serialized
b'x80x03c__main__nStudentnqx00)x81qx01}qx02(Xx04x00x00x00nameqx03Xx04x00x00x00Lisaqx04Xx03x00x00x00ageqx05Kx17ub.'
>>> after_l = pickle.loads(serialized)
>>> after_l.say()
I am Lisa
>>> after_l.__dict__
{'name': 'Lisa', 'age': 23

本文由bwin必赢发布,转载请注明来源

关键词: Python 必赢体育官网