欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

python硬盤序列化

王浩然1年前6瀏覽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對象。