วิธีดองวัตถุใน Python

How Pickle Objects Python



ข้อมูลใดๆ สามารถถูกทำให้เป็นอนุกรมและดีซีเรียลไลซ์ใน Python ได้โดยใช้โมดูล JSON และ Pickle ก่อนที่จะจัดเก็บข้อมูลใดๆ ในไฟล์ วัตถุ Python จะถูกจัดลำดับโดยใช้โมดูล pickle วัตถุ Python จะถูกแปลงเป็นสตรีมอักขระโดยใช้โมดูลนี้ เมื่อผู้ใช้ต้องการดึงข้อมูลของไฟล์เพื่อใช้สคริปต์ python อื่น ข้อมูลของไฟล์จะถูกดีซีเรียลไลซ์โดยโมดูล pickle คุณสมบัติของโมดูล Pickle และวิธีการใช้โมดูลนี้ในสคริปต์ python สำหรับการทำให้เป็นอนุกรมและการดีซีเรียลไลซ์เซชันได้อธิบายไว้ในบทช่วยสอนนี้

คุณสมบัติดอง:

  • ออกแบบมาเพื่อใช้กับสคริปต์ Python เป็นหลัก
  • ใช้สำหรับบันทึกอ็อบเจ็กต์หลามระหว่างกระบวนการ
  • มันติดตามวัตถุที่ต่อเนื่องกันทั้งหมดและวัตถุที่ถูกทำให้เป็นอนุกรมก่อนหน้านี้จะไม่ทำให้เป็นอันดับอีก
  • สามารถบันทึกและกู้คืนอินสแตนซ์ของคลาสได้อย่างโปร่งใส
  • ไม่ปลอดภัยในการใช้งาน ดังนั้นจึงไม่เป็นการดีที่จะแกะข้อมูลจากแหล่งที่ไม่รู้จัก

dump() สำหรับการทำให้เป็นอันดับ:

ฟังก์ชัน dump() ใช้เพื่อแปลงข้อมูลวัตถุเป็นสตรีมอักขระก่อนบันทึกลงในไฟล์ ฟังก์ชันนี้สามารถรับอาร์กิวเมนต์ได้สามอาร์กิวเมนต์ อาร์กิวเมนต์สองข้อแรกเป็นอาร์กิวเมนต์บังคับ และอาร์กิวเมนต์สุดท้ายเป็นทางเลือก อาร์กิวเมนต์แรกรับออบเจ็กต์ข้อมูลที่ต้องการทำให้เป็นอนุกรม อาร์กิวเมนต์ที่สองใช้ออบเจ็กต์ตัวจัดการไฟล์ของไฟล์นั้นที่จะเก็บข้อมูลแบบ pckled อาร์กิวเมนต์สุดท้ายใช้ชื่อโปรโตคอล







ไวยากรณ์:



ทิ้ง(data_object,file_object, [มาตรการ])

load() สำหรับการดีซีเรียลไลเซชัน:

ฟังก์ชัน load() ใช้เพื่อแปลงข้อมูลสตรีมอักขระจากไฟล์เป็นอ็อบเจกต์ Python ฟังก์ชันนี้มีอาร์กิวเมนต์เพียงอาร์กิวเมนต์เดียวและออบเจ็กต์ตัวจัดการไฟล์ของไฟล์ส่งผ่านเป็นค่าอาร์กิวเมนต์จากตำแหน่งที่จะดึงข้อมูล



ไวยากรณ์:





โหลด(file_object)

Pickle Object ง่ายๆ เพื่อเก็บไว้ในไฟล์

สร้างไฟล์ชื่อ pickle1.py ด้วยสคริปต์หลามต่อไปนี้ ในสคริปต์ต่อไปนี้ ออบเจ็กต์ข้อมูลชื่อ dataObject ถูกประกาศให้เก็บชื่อภาษาไว้ 5 ชื่อโดยวนลูป for ถัดไป ใช้เมธอด open() เพื่อกำหนดตัวจัดการไฟล์สำหรับสร้างไฟล์ไบนารีชื่อ ภาษา ดัมพ์() ฟังก์ชันนี้ใช้ที่นี่เพื่อจัดลำดับข้อมูลของ dataObject และเก็บไว้ใน ภาษา ไฟล์. หากซีเรียลไลซ์เซชั่นถูกทำให้ถูกต้อง จะมีข้อความ ข้อมูลถูกซีเรียลไลซ์จะพิมพ์ออกมา

# นำเข้าโมดูลดอง
นำเข้า ดอง

#ประกาศวัตถุเพื่อเก็บข้อมูล
dataObject= []

# วนลูปวนซ้ำ 5 ครั้งและใช้ชื่อภาษา
สำหรับNSใน พิสัย(5):
ดิบ= ป้อนข้อมูล('ป้อนชื่อภาษา :')

dataObject.ผนวก(ดิบ)

#เปิดไฟล์สำหรับเขียนข้อมูล
file_handler= เปิด('ภาษา', 'wb')

#ดัมพ์ข้อมูลของอ็อบเจ็กต์ลงไฟล์
ดอง.ทิ้ง(dataObject,file_handler)

# ปิดตัวจัดการไฟล์เพื่อปล่อยทรัพยากร
file_handler.ปิด()

#พิมพ์ข้อความ
พิมพ์('ข้อมูลถูกจัดลำดับ')

เอาท์พุท:



หลังจากรันสคริปต์แล้ว จะใช้ชื่อภาษาห้าชื่อเป็นอินพุต

แกะข้อมูลจากไฟล์

การแกะข้อมูลเป็นสิ่งที่ตรงกันข้ามกับข้อมูลการดอง สร้างไฟล์ชื่อ pickle2.py ด้วยสคริปต์หลามต่อไปนี้ ที่นี่, เปิด() เมธอดใช้เปิดไฟล์ไบนารีชื่อ ภาษา สร้างขึ้นในตัวอย่างก่อนหน้านี้ โหลด() ฟังก์ชันใช้เพื่อแยกข้อมูลออกจากไฟล์และเก็บไว้ในตัวแปร dataObject . ต่อไป, สำหรับ วนซ้ำใช้ข้อมูลจาก dataObject และพิมพ์ในเทอร์มินัล

# นำเข้าโมดูลดอง
นำเข้า ดอง

# เปิดตัวจัดการไฟล์สำหรับอ่านไฟล์จากตำแหน่งที่จะโหลดข้อมูล
file_handler= เปิด('ภาษา', 'อาร์บี')

# โหลดข้อมูลจากไฟล์หลังจากการดีซีเรียลไลซ์เซชั่น
dataObject= ดอง.โหลด(file_handler)

# ปิดตัวจัดการไฟล์
file_handler.ปิด()

#พิมพ์ข้อความ
พิมพ์('ข้อมูลหลังจากการดีซีเรียลไลซ์เซชัน')

# วนซ้ำเพื่อพิมพ์ข้อมูลหลังจากการดีซีเรียลไลเซชัน
สำหรับชั่วโมงในdataObject:
พิมพ์('ค่าข้อมูล : ',ชั่วโมง)

เอาท์พุท:

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันสคริปต์

Pickle a Class Object ไปยังไฟล์

วิธีการที่วัตถุคลาสสามารถดองได้แสดงในตัวอย่างต่อไปนี้ สร้างไฟล์ชื่อ pickle3.py ด้วยสคริปต์ต่อไปนี้ ที่นี่, พนักงาน มีการประกาศคลาสเพื่อกำหนดค่าข้อมูลสามค่าของพนักงาน ถัดไป ออบเจ็กต์ตัวจัดการไฟล์ชื่อ fileHandler ถูกสร้างขึ้นเพื่อเปิดไฟล์สำหรับเขียน หลังจากเริ่มต้นคลาสอ็อบเจ็กต์แล้ว ข้อมูลจะถูกจัดลำดับโดยใช้ ดัมพ์() ฟังก์ชั่นและเก็บไว้ในไฟล์ชื่อ พนักงานข้อมูล . หากไฟล์จะสร้างอย่างถูกต้องแล้วข้อความ ข้อมูลถูกจัดลำดับ จะพิมพ์

# นำเข้าโมดูลดอง
นำเข้า ดอง

#ประกาศชั้นพนักงานเก็บค่า
ระดับพนักงาน:
def __ในนั้น__(ตัวเอง,ชื่อ, อีเมล,โพสต์):
ตัวเอง.ชื่อ =ชื่อ
ตัวเอง.อีเมล = อีเมล
ตัวเอง.โพสต์ =โพสต์

#สร้างวัตถุของพนักงาน
empObject=พนักงาน('ฟาร์ฮีน', ' [ป้องกันอีเมล] ', 'ผู้จัดการ')

# เปิดไฟล์สำหรับเก็บข้อมูล
fileHandler= เปิด('ข้อมูลพนักงาน', 'wb')

#บันทึกข้อมูลลงไฟล์
ดอง.ทิ้ง(empObject,fileHandler)

#ปิดไฟล์
ตัวจัดการไฟล์ปิด()

#พิมพ์ข้อความ
พิมพ์('ข้อมูลถูกจัดลำดับ')

เอาท์พุท:

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันสคริปต์

คลายข้อมูลไปยัง Class Object

คลาสที่มีคุณสมบัติและวิธีการที่จำเป็นจะต้องประกาศเพื่อดึงข้อมูลจากไฟล์ไปยังคลาสอ็อบเจ็กต์ สร้างไฟล์ชื่อ pickle4.py ด้วยรหัสต่อไปนี้ พนักงาน คลาสถูกกำหนดไว้ที่นี่เพื่อดึงข้อมูล fileObject ตัวแปรที่ใช้ในการเปิดไฟล์ พนักงานข้อมูล สำหรับการอ่าน ต่อไป, โหลด() ฟังก์ชั่นใช้เพื่อเก็บข้อมูลในคลาสอ็อบเจ็กต์หลังจากการดีซีเรียลไลซ์เซชั่น แสดง() หน้าที่ของ พนักงาน คลาสถูกเรียกให้พิมพ์ค่าข้อมูลของคลาสอ็อบเจ็กต์

# นำเข้าโมดูลดอง
นำเข้า ดอง

#ประกาศคลาสพนักงานอ่านและพิมพ์ข้อมูลจากไฟล์
ระดับพนักงาน:
def __ในนั้น__(ตัวเอง,ชื่อ, อีเมล,โพสต์):
ตัวเอง.ชื่อ =ชื่อ
ตัวเอง.อีเมล = อีเมล
ตัวเอง.โพสต์ =โพสต์

defแสดง(ตัวเอง):
พิมพ์('ข้อมูลพนักงาน:')
พิมพ์('ชื่อ :', ตัวเอง.ชื่อ)
พิมพ์('อีเมล :', ตัวเอง.อีเมล)
พิมพ์('โพสต์ :', ตัวเอง.โพสต์)

#เปิดไฟล์เพื่ออ่าน
fileObject= เปิด('ข้อมูลพนักงาน', 'อาร์บี')

# แกะข้อมูล
พนักงาน= ดอง.โหลด(fileObject)

#ปิดไฟล์
fileObject.ปิด()

#พิมพ์ดาต้าเฟรม
พนักงาน.แสดง()

เอาท์พุท:

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันสคริปต์

บทสรุป

โมดูล Pickle เป็นคุณลักษณะที่มีประโยชน์ของ python สำหรับการทำให้เป็นอนุกรมของข้อมูลและการดีซีเรียลไลซ์เซชัน หลังจากเสร็จสิ้นตัวอย่างที่แสดงในบทช่วยสอนนี้แล้ว การถ่ายโอนข้อมูลจากสคริปต์ python หนึ่งไปยังสคริปต์ python อื่นจะง่ายขึ้นสำหรับทุกคน