Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การทำความเข้าใจ Python Pickling พร้อมตัวอย่าง


ในบทความนี้ เราจะเรียนรู้เกี่ยวกับการ pickle ชนิดข้อมูลต่างๆ ใน Python เราสามารถ pickle ได้: Booleans, Integers, Floats, Complex numbers, Strings, Tuples, Lists, Sets, และ dictionaries ที่มี pickable objects บางเอนทิตี้ เช่น generators, inner local classes, lambda functions ไม่สามารถ pickle ได้

Pickling คืออะไร?

Pickling เกี่ยวข้องกับวงจรต่อเนื่องของการ serialize และ deserialize Python entities แบบ object type และโครงสร้างที่เกี่ยวข้อง ยังเรียกว่า marshalling หรือ flattening นี่เกี่ยวข้องกับการแปลงออบเจกต์ที่อยู่ในหน่วยความจำเป็นรูปแบบไบต์ที่อาจจัดเก็บบนดิสก์หรือส่งผ่านเครือข่ายท้องถิ่น

ข้อจำกัดในการใช้งาน?

เมื่อเราต้องการแชร์ข้อมูลโดยใช้ภาษาโปรแกรมมิ่งที่ต่างกัน การใช้ pickle modules ไม่ควรใช้ นั่นหมายถึง cross-platform compatibility ไม่ได้รับการรับประกัน

Pickling สามารถทำได้กับ raw data โดยไม่ต้องการ file handling ในโมดูลนี้ เราจะเรียนรู้วิธีที่เราสามารถ pickle raw data ลงในไฟล์ไบนารีโดยกระบวนการ serialization

ตัวอย่าง

# Python pickling
import pickle as pk

def learnData():
    # ข้อมูลที่จะเก็บในฐานข้อมูล
    dict_1 = {'tutorial': 'point', 'Python': '3.x'}
    dict_2 = {'Data structure': 'dictionary', 'pickling': 'serialization'}
    # database
    db = {}
    db['1'] = dict_1
    db['2'] = dict_2
    # เปิดไฟล์ไบนารีด้วย file pointer ในโหมด append
    fp = open('Newfile', 'ab')
    # source, destination
    pk.dump(db, fp)
    fp.close()

def displayData():
    # เปิดไฟล์ไบนารีด้วย file pointer ในโหมด read
    fp = open('Newfile', 'rb')
    db = pk.load(fp)
    for i in db:
        print(i, '=>', db[i])
    fp.close()

if __name__ == '__main__':
    learnData()
    displayData()

ผลลัพธ์

dict_1 = {'tutorial': 'point', 'Python': '3.x'}
dict_2 = {'Data structure': 'dictionary', 'pickling': 'serialization'}

สรุป

ในบทความนี้ เราได้เรียนรู้การ pickle และ unpickle ใน Python 3.x หรือเวอร์ชันก่อนหน้าโดยใช้ built-in pickle module