Computer >> Máy Tính >  >> Lập trình >> Python

Trăn muối

Mô-đun pickle Python được sử dụng để tuần tự hóa và hủy tuần tự hóa cấu trúc đối tượng python. Quá trình chuyển đổi bất kỳ loại đối tượng python nào (danh sách, dict, v.v.) thành các luồng byte (0s và 1s) được gọi là chọn hoặc tuần tự hóa hoặc làm phẳng hoặc sắp xếp. Chúng tôi có thể chuyển đổi luồng byte (được tạo ra thông qua quá trình xử lý) trở lại thành các đối tượng python bằng một quá trình được gọi là giải nén.

Tại sao lại là Pickle ?:Trong thế giới thực, việc sử dụng pickle và unickling rất phổ biến vì chúng cho phép chúng tôi dễ dàng chuyển dữ liệu từ máy chủ / hệ thống này sang máy chủ / hệ thống khác và sau đó lưu trữ trong tệp hoặc cơ sở dữ liệu.

Đề phòng:Không nên chọn lọc dữ liệu nhận được từ một nguồn không đáng tin cậy vì chúng có thể gây ra mối đe dọa bảo mật. Tuy nhiên, mô-đun pickle không có cách nào để biết hoặc báo động khi đang lấy dữ liệu độc hại.

Chỉ sau khi nhập mô-đun dưa chua, chúng tôi có thể thực hiện ngâm và tháo. Nhập dưa chua có thể được thực hiện bằng lệnh sau -

import pickle

Ví dụ về dưa chua:

Dưới đây là một chương trình đơn giản về cách chọn một danh sách:

Chọn một danh sách đơn giản :Pickle_list1.py

import pickle
mylist = ['a', 'b', 'c', 'd']
with open('datafile.txt', 'wb') as fh:
   pickle.dump(mylist, fh)

Trong đoạn mã trên, danh sách - “mylist” chứa bốn phần tử (‘a’, ‘b’, ‘c’, ‘d’). Chúng tôi mở tệp ở chế độ “wb” thay vì “w” vì tất cả các hoạt động được thực hiện bằng cách sử dụng byte trong thư mục làm việc hiện tại. Một tệp mới có tên “datafile.txt” được tạo, sẽ chuyển đổi dữ liệu danh sách của tôi trong luồng byte.

Bỏ chọn một danh sách đơn giản :Unickle_list1.py

import pickle
pickle_off = open ("datafile.txt", "rb")
emp = pickle.load(pickle_off)
print(emp)

Đầu ra:Khi chạy các tập lệnh trên, bạn có thể thấy lại dữ liệu danh sách của mình dưới dạng đầu ra.

['a', 'b', 'c', 'd']

Gọt một từ điển đơn giản -

import pickle
EmpID = {1:"Zack",2:"53050",3:"IT",4:"38",5:"Flipkart"}
pickling_on = open("EmpID.pickle","wb")
pickle.dump(EmpID, pickling_on)
pickling_on.close()

Bỏ chọn từ điển -

import pickle
pickle_off = open("EmpID.pickle", 'rb')
EmpID = pickle.load(pickle_off)
print(EmpID)

Khi chạy tập lệnh trên (bỏ chọn), chúng tôi lấy lại từ điển của mình như khi chúng tôi khởi tạo trước đó. Ngoài ra, xin lưu ý vì chúng tôi đang đọc byte ở đây, chúng tôi đã sử dụng “rb” thay vì “r”.

Đầu ra

{1: 'Zack', 2: '53050', 3: 'IT', 4: '38', 5: 'Flipkart'}

Ngoại lệ dưa chua

Dưới đây là một số ngoại lệ phổ biến được nêu ra khi xử lý mô-đun dưa chua -

  • Pickle.PicklingError:Nếu đối tượng pickle không hỗ trợ quá trình ngâm, thì ngoại lệ này sẽ được nêu ra.

  • Pickle.UnpicklingError:Trong trường hợp tệp chứa dữ liệu xấu hoặc bị hỏng.

  • Lỗi EOFError:Trong trường hợp phần cuối của tệp được phát hiện, ngoại lệ này được đưa ra.

Prons:

  • Tiện dụng để lưu dữ liệu phức tạp.

  • Dễ sử dụng, nhẹ hơn và không yêu cầu nhiều dòng mã.

  • Tệp được tạo ra không dễ đọc và do đó cung cấp một số bảo mật.

Nhược điểm:

  • Các ngôn ngữ khác ngoài python có thể không tạo lại được các đối tượng python đã ngâm.

  • Rủi ro giải nén dữ liệu từ các nguồn độc hại.