Pickling dan Unpickling adalah proses dalam python yang digunakan untuk bersiri dan deserializing objek, masing -masing. Serialization adalah proses menukar objek ke dalam aliran byte, yang boleh disimpan dalam fail atau dihantar melalui rangkaian. Aliran byte ini kemudiannya boleh menjadi deserialized, atau tidak ditikam, untuk membina semula objek asal.
Di Python, modul pickle
digunakan untuk operasi ini. Pickling menukarkan objek Python ke dalam format binari yang boleh disimpan atau dihantar, dan tidak mengisahkan mengambil objek asal dari format binari ini. Ini berguna untuk objek yang berterusan atau menghantar struktur data kompleks antara bahagian -bahagian program atau mesin yang berlainan.
Modul pickle
menyokong kebanyakan jenis data Python, termasuk contoh kelas adat, tetapi ia khusus untuk Python dan mungkin tidak serasi dengan bahasa pengaturcaraan lain.
Untuk menggunakan Pickling untuk menyelamatkan objek Python, anda boleh mengikuti langkah -langkah ini:
Import Modul pickle
:
<code class="python">import pickle</code>
Buat atau dapatkan objek yang anda mahu acar:
Sebagai contoh, senarai atau kamus:
<code class="python">data = {'key': 'value', 'number': 42}</code>
Buka fail dalam mod tulis binari:
<code class="python">with open('data.pickle', 'wb') as file: # Use pickle.dump to serialize the object to the file pickle.dump(data, file)</code>
Dalam contoh ini, data.pickle
adalah fail di mana data bersiri akan disimpan.
Untuk membongkar dan mengambil objek, buka fail dalam mod baca binari:
<code class="python">with open('data.pickle', 'rb') as file: # Use pickle.load to deserialize the object from the file loaded_data = pickle.load(file)</code>
Sekarang, loaded_data
akan mengandungi objek asal.
Berikut adalah contoh lengkap yang menunjukkan penjerukan dan tidak menentu:
<code class="python">import pickle # Object to be pickled data = {'key': 'value', 'number': 42} # Pickling with open('data.pickle', 'wb') as file: pickle.dump(data, file) # Unpickling with open('data.pickle', 'rb') as file: loaded_data = pickle.load(file) print(loaded_data) # Output: {'key': 'value', 'number': 42}</code>
Data yang tidak menentu di Python boleh menimbulkan risiko keselamatan yang signifikan jika data berasal dari sumber yang tidak dipercayai. Berikut adalah beberapa pertimbangan utama:
pickle
boleh melaksanakan kod python sewenang -wenangnya semasa tidak menentu. Sekiranya penyerang memanipulasi data jeruk, mereka boleh menyuntik kod berniat jahat yang akan dilaksanakan apabila data itu tidak ditimbulkan. Ini amat berbahaya dalam aplikasi rangkaian di mana data mungkin diterima dari sumber yang tidak dipercayai.json
di Python adalah alternatif yang selamat untuk bersiri jenis data asas.Inilah contoh bagaimana anda dapat mengendalikan dengan selamat:
<code class="python">import pickle def safe_unpickle(file_path): try: with open(file_path, 'rb') as file: data = pickle.load(file) # Validate data here if necessary return data except (pickle.UnpicklingError, EOFError, ImportError, AttributeError) as e: print(f"Error unpickling: {e}") return None # Use the function loaded_data = safe_unpickle('data.pickle') if loaded_data is not None: print(loaded_data)</code>
Dengan mengikuti pertimbangan keselamatan ini, anda boleh mengurangkan risiko yang berkaitan dengan data yang tidak menentu di Python.
Atas ialah kandungan terperinci Apa yang menjerit dan tidak menentu di Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!