python 硬盘序列号(python硬盘序列化)

1年前 (2023-11-02)阅读113回复0
周达生
周达生
  • 注册排名10013
  • 经验值0
  • 级别
  • 主题0
  • 回复0
楼主

Python硬盘序列化是指将Python对象转换为字节流,存储在硬盘上以便之后使用。它可以在程序重启后,继续使用之前存储的对象,从而避免重新计算,提高程序效率。

import pickle
# 定义对象
class Student:
def __init__(self, name, age):
self.name = name
self.age = age
s = Student('Tom', 18)
# 写入文件
with open('student.pickle', 'wb') as f:
pickle.dump(s, f)
# 读取文件
with open('student.pickle', 'rb') as f:
s = pickle.load(f)
print(s.name, s.age)

在以上代码中,我们先定义了一个Student类,并创建一个对象s。然后使用pickle模块将s对象序列化后写入文件"student.pickle"中。最后再使用pickle模块将文件中的字节流读取出来,反序列化为对象,并输出其名称和年龄。

需要注意的是,存储的对象需要是可序列化的,即对象的属性也必须是可序列化的。在某些情况下,某些属性需要通过特殊方式进行序列化或反序列化,比如datetime对象需要使用datetime模块中的函数。

import datetime
import pickle
class Employee:
def __init__(self, name, hire_date):
self.name = name
self.hire_date = hire_date
def serialize(self):
return {'name': self.name,
'hire_date': self.hire_date.strftime('%Y-%m-%d')}
@classmethod
def deserialize(cls, data):
return cls(name=data['name'],
hire_date=datetime.datetime.strptime(data['hire_date'], '%Y-%m-%d').date())
e = Employee('Tom', datetime.date(2022, 1, 1))
with open('employee.pickle', 'wb') as f:
data = e.serialize()
pickle.dump(data, f)
with open('employee.pickle', 'rb') as f:
data = pickle.load(f)
e = Employee.deserialize(data)
print(e.name, e.hire_date)

以上代码中,我们在Employee类中定义了serialize方法和deserialize方法,用于将对象序列化为字典和从字典中反序列化,并使用了datetime模块对日期进行了特殊处理。在序列化时,先将对象转换为字典,再存储到文件中;在反序列化时,先从文件中读取字典,再将其转换为Employee对象。

本文可能转载于网络公开资源,如果侵犯您的权益,请联系我们删除。

本文地址:https://www.pyask.cn/info/2504.html

0
回帖

python 硬盘序列号(python硬盘序列化) 期待您的回复!

取消
载入表情清单……
载入颜色清单……
插入网络图片

取消确定

图片上传中
编辑器信息
提示信息