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對象。
上一篇python確定當前時間
下一篇python破解網站會員