Sử dụng pickle cho lưu giữ vĩnh viễn các objects
Các học phần trước đã thảo luận lưu dữ liệu trong nơi lưu giữ vĩnh viễn với các text files. Bây giờ giả sử bạn muốn
lưu các dạng mới của các objects vào các files. Ví dụ, nó sẽ là một ý tưởng khôn ngoan để back up thông tin cho
một savings account vào một file bất cứ khi nào account đó được điều chỉnh. Bạn có thể chuyển đổi bất cứ object
nào thành text cho lưu giữ, nhưng chập các objects phức tạp thành text và quay lại lần nữa có thể là tẻ nhạt và
gây ra các đau đầu duy trì. May mắn là, Python bao gồm một mô đun cái cho phép lập trình viên lưu và load các objects
sử dụng một quá trình gọi là pickling. Thuật ngữ đi từ quá trình chuyển đổi cucumbers để pickles cho bảo quản trong
jars. Tuy nhiên, trong trường hợp của các objects điện toán, bạn có thể ẩn dụ có cucumbers quay trở lại từ pickle
jar một lần nữa. Bạn có thể pickle một object trước khi nó được lưu vào một file, và sau đó unpickle nó khi nó được
load từ một file vào một chương trình. Python quan tâm tất cả các chi tiết chuyển đổi tự động. Bạn có thể bắt đầu
bằng cách nhập khẩu pickle module. Các files được mở cho đầu vào và đầu ra và được đóng theo phong cách thông thường,
ngoại trừ rằng các cờ “rb” và “wb” được sử dụng thay cho ‘r’ và ‘w’ tương ứng. Để lưu một object, bạn sử dụng hàm
pickle.dump. Đối số đầu tiên của nó là object sẽ được dump, hay lưu vào một file, và đối số thứ hai của nó là file
object.
Bạn có thể sử dụng pickle module để lưu các accounts trong một bank vào một file. Bạn bắt đầu bằng cách định nghĩa
một phương thức Bank tên save. Phương thức bao gồm một đối số tùy chọn cho tên file. Bạn giả định rằng Bank object
cũng có biến thực thể cho tên file. Cho một bank rỗng, mới, giá trị biến này ban đầu là None. Bất cứ khi nào bank
được lưu vào một file, biến này trở thành tên file hiện hành. khi đối số tên file của phương thức không được cung cấp,
phương thức sử dụng tên file hiện hành của bank nếu có một cái. Cái này tương tự như sử dụng tùy chọn Save trong một
menu File. Khi đói số tên file được cung cấp, nó được sử dụng để lưu bank vào một file khác. Cái này tương tự như
tùy chọn Save As trong một menu File. Sau đây là code:
import pickle
def save(self, fileName = None):“””Saves pickled accounts to a file. The parameter
allows the user to change filenames.”””
if fileName:self.fileName = fileName
else:
return
fileObj = open(self. fileName, “wb”)
for account in self.accounts.values():pickle.dump(account, fileObj)
fileObj.close()
