Cara mengambil benda di Python

How Pickle Objects Python



Sebarang data boleh diserialisasikan dan didesialisasikan di Python dengan menggunakan modul JSON dan Pickle. Sebelum menyimpan sebarang data dalam fail, objek Python bersiri menggunakan modul pickle. Objek Python ditukar menjadi aliran watak dengan menggunakan modul ini. Apabila pengguna ingin mengambil data fail untuk menggunakan skrip python lain maka data fail tersebut terdeseralisasikan oleh modul pickle. Ciri-ciri modul pickle dan bagaimana modul ini dapat digunakan dalam skrip python untuk serialisasi dan deserialisasi dijelaskan dalam tutorial ini.

Ciri Acar:

  • Ia direka terutamanya untuk digunakan untuk skrip Python.
  • Ia digunakan untuk menyimpan objek python antara prosesnya.
  • Ia melacak semua objek bersiri dan objek yang bersiri sebelumnya tidak akan bersiri lagi.
  • Ia dapat menyimpan dan memulihkan contoh kelas dengan telus.
  • Ia tidak selamat digunakan. Oleh itu, tidak lebih baik untuk mengambil data dari sumber yang tidak diketahui.

dump () untuk bersiri:

fungsi dump () digunakan untuk mengubah data objek menjadi aliran karakter sebelum menyimpan dalam fail. Fungsi ini boleh mengambil tiga hujah. Dua argumen pertama adalah wajib dan argumen terakhir adalah pilihan. Argumen pertama mengambil objek data yang perlu bersiri. Argumen kedua mengambil objek pengendali fail dari fail itu di mana data pckled akan disimpan. Argumen terakhir mengambil nama protokol.







Sintaks:



pembuangan(data_objek,fail_objek, [protokol])

beban () untuk deserialisasi:

fungsi load () digunakan untuk menukar data aliran watak dari fail menjadi objek Python. Fungsi ini hanya mengandungi satu argumen dan objek pengendali fail berlalu sebagai nilai argumen dari mana data akan diambil.



Sintaks:





memuatkan(fail_objek)

Ambil Objek sederhana untuk disimpan dalam fail

Buat fail bernama acar1.py dengan skrip python berikut. Dalam skrip berikut, objek data bernama dataObjek dinyatakan menyimpan lima nama bahasa dengan mengulangi gelung untuk. Seterusnya, kaedah open () digunakan untuk menetapkan pengendali fail untuk membuat fail binari bernama bahasa. pembuangan() fungsi digunakan di sini untuk membuat siri data dataObjek dan simpan di bahasa fail. Sekiranya serialisasi akan dilakukan dengan betul maka mesej, Data bersiri akan dicetak.

# Import modul acar
mengimport acar

# Menyatakan objek untuk menyimpan data
dataObjek= []

# Ulangi gelung untuk 5 kali dan ambil nama bahasa
untukndalam julat(5):
mentah= input('Masukkan nama bahasa:')

dataObjek.tambahkan(mentah)

# Buka fail untuk menulis data
fail_handler= buka('bahasa', 'wb')

# Buangkan data objek ke dalam fail
acar.pembuangan(dataObjek,fail_handler)

# tutup pengendali fail untuk melepaskan sumber
fail_handler.tutup()

# Cetak mesej
mencetak('Data bersiri')

Pengeluaran:



Setelah menjalankan skrip, ia akan mengambil lima nama bahasa sebagai input.

Batalkan pengambilan data dari fail

membongkar data adalah kebalikan dari pengambilan data. Buat fail bernama pickle2.py dengan skrip python berikut. Di sini, buka() kaedah digunakan untuk membuka fail binari yang diberi nama bahasa , dibuat dalam contoh sebelumnya. beban () fungsi digunakan untuk membongkar data dari fail dan menyimpannya dalam pemboleh ubah dataObjek . Seterusnya, untuk gelung digunakan mengulangi data dari dataObjek dan cetak di terminal.

# Import modul acar
mengimport acar

# Buka pengendali fail untuk membaca fail dari mana data akan dimuat
fail_handler= buka('bahasa', 'rb')

# Muatkan data dari fail setelah deserialisasi
dataObjek= acar.memuatkan(fail_handler)

# Tutup pengendali fail
fail_handler.tutup()

# Cetak mesej
mencetak('Data selepas deserialisasi')

# Ulangi gelung untuk mencetak data setelah deserialisasi
untukjamdalamdataObjek:
mencetak('Nilai data:',jam)

Pengeluaran:

Output berikut akan muncul setelah menjalankan skrip.

Jemput Objek Kelas ke fail

Bagaimana objek kelas dapat dijemput ditunjukkan dalam contoh berikut. Buat fail bernama pickle3.py dengan skrip berikut. Di sini, Pekerja kelas dinyatakan menetapkan tiga nilai data pekerja. Seterusnya, objek pengendali fail bernama fileHandler dibuat untuk membuka fail untuk ditulis. Setelah memulakan objek kelas, data diselaraskan menggunakan pembuangan() berfungsi dan disimpan dalam fail bernama pekerjaData . Sekiranya fail akan dibuat dengan betul maka mesejnya, Data bersiri akan mencetak.

# Modul acar import
mengimport acar

# Menyatakan kelas pekerja untuk menyimpan nilai
kelasPekerja:
def __di dalamnya__(diri,nama, e-mel,jawatan):
diri.nama =nama
diri.e-mel = e-mel
diri.jawatan =jawatan

#Buat objek pekerja
empObjek=Pekerja('Farheen', '[dilindungi e-mel]', 'Pengurus')

# Buka fail untuk menyimpan data
fileHandler= buka('data pekerja', 'wb')

# Simpan data ke dalam fail
acar.pembuangan(empObjek,fileHandler)

# Tutup fail
fileHandler.tutup()

# Cetak mesej
mencetak('Data bersiri')

Pengeluaran:

Output berikut akan muncul setelah menjalankan skrip.

Batalkan pengambilan data ke Objek Kelas

Kelas dengan sifat dan kaedah yang diperlukan perlu menyatakan untuk mengambil data dari fail ke objek kelas. Buat fail bernama pickle4.py dengan kod berikut. Pekerja kelas ditakrifkan di sini untuk mengambil data. failObjek pemboleh ubah digunakan untuk membuka fail, pekerjaData untuk membaca. Seterusnya, beban () fungsi digunakan untuk menyimpan data di objek kelas setelah deserialisasi. paparan () fungsi Pekerja kelas dipanggil untuk mencetak nilai data objek kelas.

# Modul acar import
mengimport acar

# Menyatakan kelas pekerja untuk membaca dan mencetak data dari fail
kelasPekerja:
def __di dalamnya__(diri,nama, e-mel,jawatan):
diri.nama =nama
diri.e-mel = e-mel
diri.jawatan =jawatan

defpaparan(diri):
mencetak('Maklumat Pekerja:')
mencetak('Nama:', diri.nama)
mencetak('E-mel:', diri.e-mel)
mencetak('Pos:', diri.jawatan)

# Buka fail untuk dibaca
failObjek= buka('data pekerja', 'rb')

# Pilih data
pekerja= acar.memuatkan(failObjek)

# Tutup fail
failObjek.tutup()

#cetak bingkai data
pekerja.paparan()

Pengeluaran:

Output berikut akan muncul setelah menjalankan skrip.

Kesimpulannya

Modul Pickle adalah ciri berguna python untuk serialisasi data dan deserialisasi. Setelah menyelesaikan contoh yang ditunjukkan dalam tutorial ini, pemindahan data dari satu skrip python ke skrip python yang lain akan lebih mudah bagi sesiapa sahaja.