Độ bền dữ liệu Python - Tuần tự hóa đối tượng
Đối tượng tệp tích hợp của Python được trả về bởi hàm open () có sẵn của Python có một thiếu sót quan trọng. Khi được mở bằng chế độ 'w', phương thức write () chỉ chấp nhận đối tượng chuỗi.
Điều đó có nghĩa là, nếu bạn có dữ liệu được biểu diễn ở bất kỳ dạng không phải chuỗi nào, đối tượng của các lớp tích hợp sẵn (số, từ điển, danh sách hoặc bộ dữ liệu) hoặc các lớp do người dùng xác định, nó không thể được ghi trực tiếp vào tệp. Trước khi viết, bạn cần chuyển đổi nó trong biểu diễn chuỗi của nó.
numbers=[10,20,30,40]
file=open('numbers.txt','w')
file.write(str(numbers))
file.close()
Đối với tệp nhị phân, đối số để write()phương thức phải là một đối tượng byte. Ví dụ: danh sách các số nguyên được chuyển đổi thành byte bởibytearray() và sau đó được ghi vào tệp.
numbers=[10,20,30,40]
data=bytearray(numbers)
file.write(data)
file.close()
Để đọc lại dữ liệu từ tệp trong kiểu dữ liệu tương ứng, cần thực hiện chuyển đổi ngược lại.
file=open('numbers.txt','rb')
data=file.read()
print (list(data))
Kiểu chuyển đổi thủ công này, từ một đối tượng sang định dạng chuỗi hoặc byte (và ngược lại) rất cồng kềnh và tẻ nhạt. Có thể lưu trữ trạng thái của một đối tượng Python dưới dạng luồng byte trực tiếp vào một tệp hoặc luồng bộ nhớ và truy xuất về trạng thái ban đầu của nó. Quá trình này được gọi là tuần tự hóa và hủy tuần tự hóa.
Thư viện tích hợp sẵn của Python chứa các mô-đun khác nhau cho quá trình tuần tự hóa và giải mã hóa.
Sr.No. | Tên & Mô tả |
---|---|
1 |
pickle Thư viện tuần tự hóa cụ thể trong Python |
2 |
marshal Thư viện được sử dụng nội bộ để tuần tự hóa |
3 |
shelve Đối tượng Pythonic bền bỉ |
4 |
dbm thư viện cung cấp giao diện cho cơ sở dữ liệu Unix |
5 |
csv thư viện để lưu trữ và truy xuất dữ liệu Python sang định dạng CSV |
6 |
json Thư viện để tuần tự hóa sang định dạng JSON phổ biến |