Jak používat Pickle k ukládání objektů v Pythonu

Pickle, který je ve výchozím nastavení součástí knihovny Python, je důležitým modulem, kdykoli potřebujete vytrvalost mezi uživatelskými relacemi. Jako modul zajišťuje pickle ukládání Pythonových objektů mezi procesy.

Ať už programujete pro databáze, hra, fórum nebo jiná aplikace, která musí ukládat informace mezi relacemi, je pickle užitečný pro ukládání identifikátorů a nastavení. Modul pickle může ukládat věci, jako jsou datové typy, jako jsou booleovské řetězce, řetězce a bajtová pole, seznamy, slovníky, funkce a další.

Poznámka: Pojem moření je také známý jako serializace, zařazování a zploštění. Bod je však vždy stejný - pro uložení objektu do souboru pro pozdější načtení. Moření toho dosáhne zapsáním objektu jako jednoho dlouhého proudu bytů.

Ukázkový ukázkový kód v Pythonu

Chcete-li zapsat objekt do souboru, použijte kód v následující syntaxi:

importovat okurku 
object = Object ()
filehandler = open (název souboru, 'w')
pickle.dump (objekt, filehandler)

Takto vypadá příklad skutečného světa:

importovat okurku 
importovat matematiku
object_pi = math.pi
file_pi = open ('filename_pi.obj', 'w')
pickle.dump (object_pi, file_pi)

Tento úryvek zapíše obsah object_pi do souboru handler file_pi, který je zase vázán na soubor filename_pi.obj v adresáři exekucí.

Chcete-li obnovit hodnotu objektu do paměti, načtěte objekt ze souboru. Za předpokladu, že okurka dosud nebyla pro použití importována, začněte importem:

importovat okurku 
filehandler = open (název souboru, 'r')
object = pickle.load (filehandler)

Následující kód obnovuje hodnotu pi:

importovat okurku 
file_pi2 = open ('filename_pi.obj', 'r')
object_pi2 = pickle.load (file_pi2)

Objekt je pak opět připraven k použití, tentokrát jako object_pi2. Pokud chcete, můžete samozřejmě znovu použít původní jména. Tento příklad používá pro jasnost odlišné názvy.

Co si pamatovat o Pickle

Při používání modulu pickle mějte na paměti tyto věci:

  • Protokol pickle je specifický pro Python - není zaručeno, že bude kompatibilní v různých jazycích. Nejpravděpodobněji nemůžete přenášet informace, aby byly užitečné v jazycích Perl, PHP, Java nebo v jiných jazycích.
  • Rovněž neexistuje žádná záruka kompatibility mezi různými verzemi Pythonu. Je nekompatibilita, protože ne každá struktura dat Python může být modulem serializována.
  • Ve výchozím nastavení se používá nejnovější verze protokolu o nakládce. Zůstane to tak, dokud jej ručně nezměníte.

Spropitné: Také zjistit jak používat shelve k ukládání objektů v Pythonu pro další způsob zachování kontinuity objektu.