พจนานุกรมผักดองใน Python

Phcnanukrm Phak Dxng Ni Python



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

บทความนี้จะสอนวิธีจัดเก็บข้อมูล โดยเฉพาะอย่างยิ่งพจนานุกรม โดยใช้โมดูลดองของ Python ในการเริ่มต้น เราต้องจัดหาโมดูลดอง Pickle dump() ยอมรับพารามิเตอร์สามตัว อินพุตแรกระบุข้อมูลที่จะบันทึก พารามิเตอร์ที่สองคืออ็อบเจ็กต์ไฟล์ที่ส่งคืนเมื่อเปิดไฟล์ในโหมดเขียนไบนารี (wb) อาร์กิวเมนต์คีย์-ค่าคือพารามิเตอร์ที่สาม โปรโตคอลถูกกำหนดโดยพารามิเตอร์นี้ ผักดองแบ่งออกเป็นสองประเภท: โปรโตคอลที่สูงที่สุดและโปรโตคอลเริ่มต้นของผักดอง ในการดึงหรือดีซีเรียลไลซ์ข้อมูล จะใช้วิธี pickle load() ซึ่งวัตถุไฟล์จะได้รับโดยการเปิดไฟล์ในโหมด read-binary (rb)







ตัวอย่างที่ 1: การทำให้เป็นอนุกรมและดีซีเรียลไลเซชันของข้อมูลในไฟล์ Pickle โดยใช้ฟังก์ชัน Pickle Dump and Load

ในตัวอย่างนี้ เราจะเรียนรู้วิธีซีเรียลไลซ์และดีซีเรียลไลซ์ข้อมูลเป็นพจนานุกรมด้วยรหัสง่ายๆ




ในโค้ดที่แสดงในภาพประกอบก่อนหน้านี้ โมดูล pickle แรกจากไลบรารี Python จะถูกอิมพอร์ตเพื่อให้สามารถใช้เมธอดได้ จากนั้น พจนานุกรมข้อมูลที่มี 2 คีย์และค่าจะถูกเตรียมใช้งานและจัดเก็บไว้ในตัวแปรชื่อ “shape” ในบรรทัดถัดไป ใช้เมธอด pickle dump() เพื่อเปิดไฟล์ใหม่ชื่อ “info.p” ในโหมดเขียนไบนารี (wb) และข้อมูล “shape” จะถูกจัดเก็บไว้ในไฟล์นี้ ในบรรทัดถัดไป ใช้เมธอด pickle load() สำหรับไฟล์เดียวกับที่เราดัมพ์ข้อมูลในโหมด rb ซึ่งจะส่งคืนข้อมูลพจนานุกรมของเราและจัดเก็บไว้ในตัวแปรชื่อ “a” สุดท้าย วัตถุที่ส่งคืนนี้จะแสดงที่เทอร์มินัลเอาต์พุตโดยใช้คำสั่งพิมพ์ตามที่แสดงในภาพหน้าจอต่อไปนี้



เราจะเห็นว่าข้อมูลถูกจัดเก็บไว้ในไฟล์ “info.p” ก่อนโดยใช้วิธีการดัมพ์ จากนั้นเมื่อเราใช้วิธี load() กับไฟล์เดียวกัน เราก็ได้ข้อมูลกลับมา





ตัวอย่างที่ 2: การใช้ฟังก์ชัน Pickle Dump กับโปรโตคอลเพิ่มเติมเพื่อทำให้ข้อมูลเป็นอนุกรมใน Python

นี่คือตัวอย่างที่คล้ายกันซึ่งเราใช้โปรโตคอลเพิ่มเติม “HIGHEST_PROTOCOL” ของ pickle ซึ่งเป็นโปรโตคอลล่าสุด โปรโตคอลนี้อนุญาตให้ใช้คุณสมบัติภาษาใหม่ที่เราสามารถใช้ได้และรวมถึงการเพิ่มประสิทธิภาพ




ในโค้ดที่ให้ไว้ในภาพประกอบก่อนหน้านี้ โมดูล pickle แรกจะถูกนำเข้า จากนั้น พจนานุกรมของรายการหนึ่งที่มีคีย์และค่าจะถูกเตรียมใช้งานและจัดเก็บไว้ในตัวแปร “a” ในบรรทัดถัดไป ไฟล์ใหม่ซึ่งเป็น 'info.p' จะเปิดขึ้นในโหมด wb เป็นแฮนเดิล ตอนนี้ไฟล์อยู่ในวัตถุที่เรียกว่า 'ที่จับ' จากนั้น ฟังก์ชัน dump() ถูกใช้เพื่อ''จัดการ' กับพจนานุกรม 'a' โดยใช้ 'HIGHEST_PROTOCOL' สิ่งนี้ทำให้สามารถบันทึกพจนานุกรมใน 'a' ในไฟล์ 'info.p' บนดิสก์ของคอมพิวเตอร์ หากต้องการดึงข้อมูลจากไฟล์ ให้เปิดไฟล์ในโหมด 'rb' ก่อน จากนั้นใช้วิธี pickle load() สำหรับไฟล์นี้ ข้อมูลที่ส่งคืนจะถูกบันทึกในแอตทริบิวต์ “b” สุดท้าย เมื่อใช้คำสั่งพิมพ์ ข้อมูลนี้จะแสดงที่โหนดเอาต์พุต ดังที่เห็นในการจับภาพหน้าจอต่อไปนี้:

ตัวอย่างที่ 3: การทำให้เป็นอนุกรมและดีซีเรียลไลเซชันของรายการข้อมูลในไฟล์ Pickle โดยใช้ฟังก์ชัน Pickle Dump and Load

ในตัวอย่างนี้ โมดูลดองจะถูกนำเข้าก่อน จากนั้น ข้อมูลบางส่วนจะถูกแทรกลงในพจนานุกรมในรูปแบบรายการและจัดเก็บไว้ในตัวแปร “shape_colors” ในบรรทัดถัดไป ใช้วิธี Pickle dump() กับข้อมูลนี้โดยตรง แทนที่ไฟล์ในพารามิเตอร์ ไฟล์ “info.p” จะเปิดขึ้นในโหมด wb เป็นผลให้ข้อมูลพจนานุกรมถูกทิ้งในไฟล์นี้ซึ่งจัดเก็บไว้ในดิสก์ของคอมพิวเตอร์ จากนั้น หากต้องการอ่านข้อมูลจากไฟล์ จะใช้วิธี pickle load() ในไฟล์เดียวกัน ข้อมูลที่ส่งคืนจะถูกบันทึกในตัวแปร “a” สุดท้าย เมื่อใช้คำสั่งพิมพ์ ข้อมูลนี้จะแสดงที่เทอร์มินัลรอง ตามที่แสดงในภาพรวมต่อไปนี้:



ตัวอย่างที่ 4: การจัดเก็บข้อมูลในไฟล์ Pickle โดยใช้ฟังก์ชัน Pickle Dump และ Load ด้วยพารามิเตอร์ต่างๆ

ในรหัสที่ให้มา โมดูลดองแรกจะถูกนำเข้า จากนั้น พจนานุกรมเงินเดือนจะเริ่มต้นและจัดเก็บไว้ในตัวแปร 'เงินเดือน' ในบรรทัดถัดไป ไฟล์ใหม่ 'salary.p' จะเปิดขึ้นในโหมด wb เป็นแฮนเดิล ตอนนี้ไฟล์อยู่ในวัตถุที่เรียกว่า 'ที่จับ' จากนั้นจึงใช้ฟังก์ชัน pickle dump() เพื่อ 'จัดการ' กับพจนานุกรม 'เงินเดือน' โดยใช้ 'HIGHEST_PROTOCOL' สิ่งนี้ทำให้สามารถบันทึกพจนานุกรมใน 'เงินเดือน' ในไฟล์ 'salary.p' ลงในดิสก์ของคอมพิวเตอร์ ตอนนี้ ในการดึงข้อมูลกลับมาจากไฟล์ ไฟล์นั้นจะถูกเปิดในโหมด 'rb' ก่อน จากนั้นใช้วิธี pickle load() สำหรับไฟล์นี้ ข้อมูลที่ย้อนกลับจะถูกบันทึกในตัวแปร “a” ท้ายที่สุด ด้วยการใช้คำสั่งพิมพ์ ข้อมูลนี้จะแสดงที่ปลายเอาต์พุตตามที่อธิบายไว้ในสแนปชอตต่อไปนี้:



ตัวอย่างที่ 5: การทำให้เป็นอนุกรมและดีซีเรียลไลเซชันของข้อมูลในหลายมิติในไฟล์ Pickle โดยใช้ฟังก์ชัน Pickle Dump and Load

การสร้าง DataFrames (ตารางหลายมิติ) ใน Python นั้นสะดวกสำหรับการทดสอบวิธีการและฟังก์ชันใหม่ๆ ที่พบในโมดูล Python ของ Panda มีหลายวิธีในการสร้าง DataFrame ตั้งแต่เริ่มต้น แต่หนึ่งในวิธีที่ง่ายที่สุดคือการใช้พจนานุกรมพื้นฐาน


ในโค้ดที่ให้ไว้ในภาพประกอบก่อนหน้านี้ โมดูล pickle และ Pandas แรกจะถูกนำเข้า จากนั้น ตารางหลายมิติจะถูกสร้างขึ้นโดยใช้เมธอด pd.DataFrame() แอตทริบิวต์ถัดไปของกลยุทธ์คือรายการสี่รายการ แต่ละรายการสอดคล้องกับแถวของตาราง พารามิเตอร์ที่สองคือ 'คอลัมน์' ซึ่งกำหนดส่วนหัวของแต่ละคอลัมน์ของตาราง DataFrame นี้ถูกจัดเก็บไว้ใน 'ก่อน' จากนั้น ไฟล์ใหม่ซึ่งเป็น “attendance.p” จะเปิดขึ้นในโหมด wb และใช้วิธี pickle dump() กับไฟล์นี้ด้วย DataFrame ตอนนี้ ข้อมูลที่เราระบุจะถูกจัดเก็บไว้ในไฟล์ “attendance.p” บนฮาร์ดดิสก์ของคอมพิวเตอร์


ในการดึงข้อมูลจากไฟล์ เราเปิดไฟล์ในโหมด rb ซึ่งอนุญาตให้อ่านไฟล์ได้ จากนั้นใช้วิธี pickle load() ในไฟล์ “attendance.p” ในที่สุด ข้อมูลในไฟล์จะแสดงที่เทอร์มินัลเอาต์พุต อย่างที่เราเห็น DataFrame ทั้งหมดจะแสดงที่เทอร์มินัลเอาต์พุตซึ่งจัดเก็บไว้ในไฟล์ “attendance.p”

บทสรุป

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