Python tuần tự hóa đối tượng thành chuỗi

Tuần tự hóa đối tượng Python, khi chúng ta xác định trong ngữ cảnh lưu trữ và giải nén dữ liệu, được coi là một phương thức. Trong đó chúng ta có thể chuyển đổi/dịch một đối tượng dữ liệu python sang định dạng byte. Định dạng byte này có thể lưu trữ được (dưới dạng tệp hoặc trong bộ nhớ đệm). Trên hết, bạn sẽ có thể truyền, định dạng lại hoặc khôi phục nó sau này thông qua các ổ cắm. Trong tuần tự hóa, một mô-đun có tên dưa chua từ python cho phép bạn tuần tự hóa đối tượng python, đối tượng này cũng có thể được lưu trữ dưới dạng tệp vào bất kỳ vị trí nào hoặc bên trong bộ nhớ đệm trong một khoảng thời gian tạm thời

Pickle để tuần tự hóa một đối tượng python

Pickle là một mô-đun được phát triển trong python, có thể chuyển đổi một đối tượng python thành chuỗi hệ thống byte (người dùng thường không thể đọc được), sau này có thể được lưu dưới dạng tệp hoặc vào bộ nhớ đệm. Cuối cùng, nó cũng có thể giải nén các chuỗi byte thành các đối tượng python ban đầu. Có hai phương pháp khác nhau để tuần tự hóa và giải tuần tự hóa trong mô-đun dưa chua, như được đề cập bên dưới

Bắt đầu khóa học phát triển phần mềm miễn phí của bạn

Phát triển web, ngôn ngữ lập trình, kiểm thử phần mềm và những thứ khác

  • dumps() – Chức năng này cho phép bạn tuần tự hóa một đối tượng python thành một luồng byte
  • dump() – Chức năng này cho phép bạn tuần tự hóa và lưu trữ một đối tượng python vào một tệp
  • loading() – Chức năng này cho phép bạn hủy tuần tự hóa luồng byte thành đối tượng python
  • load() – Chức năng này cho phép bạn hủy tuần tự hóa một đối tượng python về dạng ban đầu thông qua một tệp truyền phát byte được lưu trữ tại một đường dẫn

Có hai phiên bản của các giao thức trong khi làm việc trên dưa chua. Một là HIGHEST_PROTOCOL và một là DEFAULT_PROTOCOL. Giá trị chuẩn cho HIGHEST_PROTOCOL là 5 và giá trị đó cho DEFAULT_PROTOCOL là 4

Gói phát triển phần mềm tất cả trong một(hơn 600 khóa học, hơn 50 dự án)

Python tuần tự hóa đối tượng thành chuỗi
Python tuần tự hóa đối tượng thành chuỗi
Python tuần tự hóa đối tượng thành chuỗi
Python tuần tự hóa đối tượng thành chuỗi

Python tuần tự hóa đối tượng thành chuỗi
Python tuần tự hóa đối tượng thành chuỗi
Python tuần tự hóa đối tượng thành chuỗi
Python tuần tự hóa đối tượng thành chuỗi

Giá
Xem khóa học

600+ Khóa học trực tuyến. hơn 50 dự án. Hơn 3000 giờ. Giấy chứng nhận có thể kiểm chứng. Truy cập Trọn đời
4. 6 (83.083 xếp hạng)

Bạn có thể kiểm tra điều này bằng cách chạy đoạn mã sau trong python

import pickle
print("The highest protocol value is:", pickle.HIGHEST_PROTOCOL)
print("The Default protocol value is:", pickle.DEFAULT_PROTOCOL)

Đầu ra của mã này như hình dưới đây, cung cấp cho bạn các giá trị giao thức cho giao thức CAO NHẤT và MẶC ĐỊNH tương ứng

Giá trị giao thức CAO NHẤT và MẶC ĐỊNH

Python tuần tự hóa đối tượng thành chuỗi

Chúng ta hãy xem một số ví dụ liên quan đến tuần tự hóa đối tượng, khử tuần tự hóa trong lập trình Python

1. dưa chua. dump() Phương pháp tuần tự hóa một đối tượng Python

dưa chua. Phương thức dump() sẽ lấy một đối tượng python làm đối số và sau đó lưu trữ nó dưới dạng tệp văn bản với đối tượng được tuần tự hóa thành byte. Hãy nhớ rằng chuyển đổi này sẽ không hiển thị cho bạn đối tượng python ban đầu mà là một byte văn bản có đối tượng đó được đánh số thứ tự trong. Xem mã dưới đây

import pickle
file =  open('serialized.txt', 'wb')
dic1 = {
"name" : "Lalit",
"age" : 28,
"active" : True,
"married" : False,
"pets" : None,
"amount": 450.98,
}
pickle.dump(dic1, file)
file.close()

Ở đây, chúng tôi đã tạo một từ điển có tên là “dic1”, chứa thông tin về người dùng truy cập cổng web và số lượng mua hàng mà anh ta đã thực hiện

Chúng tôi cũng đã xác định một đối tượng "tệp". Đối tượng này sẽ cho phép chúng ta lưu trữ các byte đã được tuần tự hóa vào một tệp văn bản tại một thư mục làm việc với tên “được tuần tự hóa”. Xem đầu ra bên dưới

Python tuần tự hóa đối tượng thành chuỗi

Ở đây, không có đầu ra nào hiển thị khi tệp được tạo và lưu trữ trong thư mục làm việc. Chúng ta có thể thấy nó như hình dưới đây

Python tuần tự hóa đối tượng thành chuỗi

Chúng tôi có thể mở tệp này trong bất kỳ trình soạn thảo văn bản nào để xem đầu ra

Python tuần tự hóa đối tượng thành chuỗi

2. dưa chua. load() Phương thức hủy tuần tự hóa các byte thành đối tượng Python

dưa chua. hàm load() sẽ lấy một tệp đã tuần tự hóa đối tượng python thành byte và sau đó chuyển đổi nó thành đối tượng python ban đầu. Xem đoạn mã dưới đây để nhận thức rõ hơn

import pickle
#Accessing the text file with serialization into bytes
file = open("serialized.txt", "rb")
#Using load() function to convert the file into a python object (dictionary)
dic = pickle.load(file)
print(dic)
file.close()

Ở đây, chúng tôi đã sử dụng cùng một đối tượng tệp mà chúng tôi đã tạo tuần tự hóa trong ví dụ trước. Sau đó, chúng tôi đã sử dụng dưa chua. load() để đọc tệp đó và chuyển đổi nó thành đối tượng gốc python là từ điển. Xem đầu ra như hình dưới đây

Python tuần tự hóa đối tượng thành chuỗi

Bạn có thể xem từ điển gốc mà bạn nhận được dưới dạng đầu ra trong bảng điều khiển, như minh họa ở trên, với thông tin người dùng

3. dưa chua. dumps() Phương pháp tuần tự hóa đối tượng Python

Bây giờ, chúng ta sẽ sử dụng dưa chua. phương thức bãi (). Điều này cho phép chúng tôi tuần tự hóa một đối tượng python thành một đối tượng văn bản có kích thước byte. Tuy nhiên, sự khác biệt ở đây là, phương pháp này không cho phép chúng tôi lưu kết quả vào một tệp; . Xem một ví dụ dưới đây

import pickle
my_dict = {
"name" : "Shawn",
"Age" : 28,
"Gender" : "Male",
"Cars" : None,
"Single" : True,
"Languages" : ["English", "German", "Spanish"]
}
#Using pickle.dumps() to serialize the object
print(pickle.dumps(my_dict, protocol = pickle.DEFAULT_PROTOCOL))

Ở đây, chúng tôi đã sử dụng dưa chua. phương thức dumps() với giá trị DEFAULT_PROTOCOL để chuyển đổi đối tượng thành byte. Xem đầu ra như hình dưới đây

Python tuần tự hóa đối tượng thành chuỗi

4. dưa chua. loading() Phương thức chuyển đổi byte mở thành đối tượng python

Hãy để chúng tôi làm ngược lại; . phương thức tải ()

import pickle
btstring = b'\x80\x04\x95k\x00\x00\x00\x00\x00\x00\x00}\x94(\x8c\x04name\x94\x8c\x05Shawn\x94\x8c\x03Age\x94K\x1c\x8c\x06Gender\x94\x8c\x04Male\x94\x8c\x04Cars\x94N\x8c\x06Single\x94\x88\x8c\tLanguages\x94]\x94(\x8c\x07English\x94\x8c\x06German\x94\x8c\x07Spanish\x94eu.'
#Using pickle.loads() to convert the byte string into a dictionary
my_dict = pickle.loads(btstring)
print(my_dict)

Mã này sẽ tạo từ điển gốc với các thành phần của nó. Xem ảnh chụp màn hình đầu ra như hình bên dưới

Python tuần tự hóa đối tượng thành chuỗi

Chúng tôi sẽ kết thúc bài viết này ở đây, nhưng không phải trước một số điểm kết luận

Sự kết luận

  1. Tuần tự hóa là một quá trình chuyển đổi một đối tượng python thành byte có thể được lưu trữ dưới dạng tệp hoặc trong bộ nhớ đệm và cũng có thể được khử tuần tự hóa
  2. Mô-đun dưa chua được sử dụng để tuần tự hóa và hủy tuần tự hóa đối tượng python
  3. Pickle có hai loại giao thức dựa trên đó quá trình tuần tự hóa và giải tuần tự hóa xảy ra. Chúng lần lượt là DEFAULT_PROTOCOL và HIGHEST_PROTOCOL
  4. Pickle chỉ có thể lưu các thuộc tính đối tượng và không thể lưu mã đối tượng

Bài viết được đề xuất

Đây là hướng dẫn về tuần tự hóa đối tượng Python. Ở đây chúng ta thảo luận về hai phương pháp tuần tự hóa và giải tuần tự hóa khác nhau trong mô-đun pickle. Bạn cũng có thể xem các bài viết sau để tìm hiểu thêm –

Tôi có thể tuần tự hóa một chuỗi không?

Sắp xếp theo thứ tự. Quét từng phần tử trong một chuỗi, tính toán độ dài của chuỗi và nối chuỗi đó với một chuỗi và dấu phân cách hoặc dấu phân cách phần tử (không nên có dấu phân cách đó trong chuỗi . Chúng tôi nối thêm độ dài của chuỗi để chúng tôi biết độ dài của từng phần tử.

Tuần tự hóa trong Python là gì?

Tuần tự hóa đối tượng là quá trình chuyển đổi trạng thái của một đối tượng thành luồng byte. Luồng byte này có thể được lưu trữ thêm trong bất kỳ đối tượng giống như tệp nào, chẳng hạn như tệp đĩa hoặc luồng bộ nhớ. Nó cũng có thể được truyền qua ổ cắm, v.v.

Phương pháp nào được sử dụng để tuần tự hóa đối tượng trong Python?

Mô-đun dưa chua được sử dụng để triển khai các giao thức nhị phân để tuần tự hóa và hủy tuần tự hóa cấu trúc đối tượng Python. muối chua. Đó là một quá trình trong đó hệ thống phân cấp đối tượng Python được chuyển đổi thành luồng byte

Điều gì xảy ra nếu đối tượng được sắp xếp theo thứ tự?

Tuần tự hóa là một cơ chế chuyển đổi trạng thái của đối tượng thành luồng byte . Deserialization là quá trình ngược lại trong đó luồng byte được sử dụng để tạo lại đối tượng Java thực tế trong bộ nhớ. Cơ chế này được sử dụng để duy trì đối tượng. Luồng byte được tạo độc lập với nền tảng.