Anda baru saja menjalankan proses yang memakan waktu untuk memuat banyak data ke objek python. Mungkin Anda mengorek data dari ribuan situs web. Mungkin Anda menghitung miliaran digit pi. Jika baterai laptop Anda mati atau jika python macet, informasi Anda akan hilang
Pickling memungkinkan Anda untuk menyimpan objek python sebagai file biner di hard drive Anda. Setelah Anda mengambil objek Anda, Anda dapat mematikan sesi python Anda, mem-boot ulang komputer Anda jika Anda mau, dan kemudian memuat objek Anda ke dalam python lagi
Anda dapat mencadangkan file acar Anda ke Google Drive atau DropBox atau stik USB biasa jika Anda mau. Anda dapat mengirimkannya melalui email ke teman
Sebuah kata peringatan. jangan memuat acar yang tidak Anda percayai. Orang jahat dapat membuat acar jahat yang dapat mengeksekusi kode tak terduga di komputer Anda (injeksi SQL, pemaksaan kata sandi, dll). Jauhi acar yang buruk
import pickle # make an example object to pickle some_obj = {'x':[4,2,1.5,1], 'y':[32,[101],17], 'foo':True, 'spam':False}
Untuk menyimpan acar, gunakan with open('mypickle.pickle', 'wb') as f: pickle.dump(some_obj, f) # note that this will overwrite any existing file # in the current working directory called 'mypickle.pickle' _8
Sebuah konvensi untuk memberi nama file acar with open('mypickle.pickle', 'wb') as f: pickle.dump(some_obj, f) # note that this will overwrite any existing file # in the current working directory called 'mypickle.pickle' 9, tetapi Anda dapat menamainya apa pun yang Anda inginkan
Pastikan untuk del some_obj print some_obj _0 file dalam mode del some_obj print some_obj 1 (tulis biner). Ini lebih ramah lintas platform daripada mode del some_obj print some_obj 2 (tulis teks) yang mungkin tidak berfungsi di Windows, dll
with open('mypickle.pickle', 'wb') as f: pickle.dump(some_obj, f) # note that this will overwrite any existing file # in the current working directory called 'mypickle.pickle' _
Untuk keperluan demonstrasi, saya akan menghapus objek asli dari memori untuk menunjukkan kepada Anda bahwa itu benar-benar hilang
del some_obj print some_obj
--------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-3-3080f97d7e85> in <module>() 1 del some_obj 2 ----> 3 print some_obj NameError: name 'some_obj' is not defined _
Memuat file acar dari hard drive Anda sesederhana del some_obj print some_obj 3 dan menentukan jalur file
with open('mypickle.pickle') as f: loaded_obj = pickle.load(f) print 'loaded_obj is', loaded_obj
loaded_obj is {'y': [32, [101], 17], 'x': [4, 2, 1.5, 1], 'foo': True, 'spam': False}
Mengawetkan panda DataFramesPanda memiliki fungsi pengawetan yang sangat mudah digunakan. Pertama kita akan membuat contoh kerangka data
import pandas as pd df = pd.DataFrame([range(11), range(100,110)], columns=list('abcdefghijk')) df
abcdefghijk00123456789101100101102103104105106107108109NaN
panda. Bingkai Data. to_pickle
Simpan kerangka data ke file pickle bernama del some_obj print some_obj 4 di direktori kerja saat ini
Kemudian untuk keperluan demonstrasi lagi, saya akan menghapus DataFrame asli
df.to_pickle('my_df.pickle') del df
panda. Bingkai Data. read_pickle
Untuk memuat kerangka data acar, lakukan saja
df2 = pd.read_pickle('my_df.pickle') df2
abcdefghijk00123456789101100101102103104105106107108109NaN
Dan hanya itu yang perlu Anda ketahui untuk pengawetan sederhana dengan python
Ini adalah cara mudah untuk mencadangkan objek penting, meneruskan objek di antara skrip, atau bahkan mengirim objek python melalui email ke pythonista lain (tetapi mereka tidak boleh membukanya kecuali mereka yakin Anda tidak memberi mereka acar berbahaya…)