I sottaceti in Python sono gustosi nel senso che rappresentano un oggetto Python come una stringa di byte. Molte cose possono effettivamente essere fatte con quei byte. Ad esempio, è possibile memorizzarli in un file o database o trasferirli su una rete.
La rappresentazione decapitata di un oggetto Python è chiamata a file di sottaceti. Il file sottoposto a picking può quindi essere utilizzato per scopi diversi, ad esempio la memorizzazione dei risultati per l'utilizzo da parte di un altro programma Python o la scrittura di backup. Per ottenere l'oggetto Python originale, semplicemente deserializzare quella stringa di byte.
Per decapitare in Python, useremo il salamoia
modulo. Come indicato nella documentazione:
Il modulo pickle implementa i protocolli binari per serializzare e de-serializzare una struttura di oggetti Python. "Pickling" è il processo mediante il quale una gerarchia di oggetti Python viene convertita in un flusso di byte e "deselezionare" è l'operazione inversa, per cui un flusso di byte (da un file binario o da un oggetto simile a un byte) viene riconvertito in una gerarchia di oggetti. Il decapaggio (e lo spoglio) è alternativamente noto come "serializzazione", "marshalling" o "appiattimento"; tuttavia, per evitare confusione, i termini usati qui sono "decapaggio" e "disfacimento".
Il salamoia
modulo ci consente di memorizzare quasi tutti gli oggetti Python direttamente a un file o una stringa senza la necessità di eseguire conversioni. Che cosa salamoia
il modulo effettivamente esegue è ciò che viene chiamato serializzazione dell'oggetto, ovvero, la conversione di oggetti da e verso stringhe di byte. L'oggetto da sottoporre a picking verrà serializzato in un flusso di byte che può essere scritto su un file, ad esempio, e ripristinato in un secondo momento.
salamoia
Il salamoia
il modulo in realtà viene già fornito con l'installazione di Python. Per ottenere un elenco dei moduli installati, è possibile digitare il seguente comando nel prompt di Python: Guida ( 'moduli')
.
Quindi tutto ciò che devi fare per lavorare con salamoia
il modulo è a importazione sottaceto
!
Da questa sezione in poi, daremo un'occhiata ad alcuni esempi di decapaggio per capire meglio il concetto. Iniziamo creando un file pickle da un oggetto. Il nostro oggetto qui sarà il fare
elenco che abbiamo creato nel tutorial degli elenchi di Python.
todo = ['scrivi post di blog', 'rispondi a un'email', 'leggi in un libro']
Per decapare il nostro oggetto lista (fare
), possiamo fare quanto segue:
import pickle todo = ['scrivi post di blog', 'rispondi a email', 'leggi in un libro'] pickle_file = file ('todo.pickle', 'w') pickle.dump (todo, pickle_file)
Si noti che abbiamo creato un importazione sottaceto
essere in grado di usare il salamoia
modulo. Abbiamo anche creato un file pickle per memorizzare l'oggetto in salamoia, vale a dire todo.pickle
. Il cumulo di rifiuti
funzione scrive una rappresentazione decapata di fare
all'oggetto file aperto pickle_file
. In altre parole, il cumulo di rifiuti
la funzione qui ha due argomenti: l'oggetto da sottaceti, che è il fare
lista e un oggetto file in cui vogliamo scrivere il pickle, che è todo.pickle
.
Di 'che vorremmo deserializzare (ripristinare) i dati in salamoia; nel nostro caso, questo è il fare
elenco. Per farlo, possiamo scrivere il seguente script:
import pickle pickle_file = file ('todo.pickle') todo = pickle.load (pickle_file) print (todo)
Lo script precedente produrrà il file fare
Elementi della lista:
['scrivi post di blog', 'rispondi a un'email', 'leggi in un libro']
Come menzionato nella documentazione, il carico (file)
la funzione fa quanto segue:
Leggere una stringa dal file dell'oggetto file aperto e interpretarla come un flusso di dati pickle, ricostruendo e restituendo la gerarchia dell'oggetto originale. Questo è equivalente aUnpickler (file) .load ()
.
Nella sezione precedente, abbiamo visto come possiamo scrivere / caricare i sottaceti da / verso un file. Questo non è necessario, comunque. Intendo dire che se vogliamo scrivere / caricare sottaceti, non abbiamo sempre bisogno di trattare con i file, possiamo invece lavorare con sottaceti come stringhe. Possiamo quindi fare quanto segue:
import pickle todo = ['scrivi post di blog', 'rispondi a un'email', 'leggi in un libro'] pickled_data = pickle.dumps (todo) print (pickled_data)
Si noti che abbiamo usato il discariche
(con una funzione "s" alla fine), che, secondo la documentazione:
Restituisce la rappresentazione decapata dell'oggetto come una stringa, anziché scriverla in un file.
Al fine di ripristinare i dati in salamoia sopra, possiamo usare il carichi (stringa)
funzione, come segue:
restored_data = pickle.loads (pickled_data)
Secondo la documentazione, che cosa carichi
la funzione fa è che:
Legge una gerarchia di oggetti decapitati da una stringa. I caratteri nella stringa oltre la rappresentazione dell'oggetto decapato vengono ignorati.
Negli esempi precedenti, abbiamo trattato il decapaggio e il ripristino (caricamento) di un solo oggetto alla volta. In questa sezione, ti mostrerò come possiamo farlo per più di un oggetto. Dì che abbiamo i seguenti oggetti:
name = Sito web 'Abder' = 'http://abder.io' english_french = 'paper': 'papier', 'pen': 'stylo', 'car': 'voiture' # dizionario tup = (31, 'abder', 4.0) # tupla
Se desideri saperne di più sui dizionari Python e sulle tuple, consulta le seguenti esercitazioni:
Possiamo semplicemente mettere sottosopra gli oggetti di cui sopra eseguendo a serie di cumulo di rifiuti
funzioni, come segue:
import pickle name = Sito web 'Abder' = 'http://abder.io' english_french = 'paper': 'papier', 'pen': 'stylo', 'car': 'voiture' # dizionario tup = ( 31, 'abder', 4.0) # tuple pickled_file = open ('pickled_file.pickle', 'w') pickle.dump (nome, pickled_file) pickle.dump (sito web, pickled_file) pickle.dump (english_french, pickled_file) pickle. dump (tup, pickled_file)
Questo salverà tutti e quattro gli oggetti nel file pickle pickled_file.pickle
.
C'è un altro modo meraviglioso per scrivere lo script sopra usando il Pickler
classe nel salamoia
modulo, come segue:
da pickle import Pickler name = Sito web 'Abder' = 'http://abder.io' english_french = 'paper': 'papier', 'pen': 'stylo', 'car': 'voiture' # dizionario tup = (31, 'abder', 4.0) # tuple pickled_file = open ('pickled_file.pickle', 'w') p = Pickler (pickled_file) p.dump (nome); p.dump (sito web); p.dump (english_french); p.dump (TUP)
Per ripristinare (caricare) i dati originali, possiamo semplicemente usare più di uno caricare
funzione, come segue:
importazione pickle pickled_file = open ('pickled_file.pickle') name = pickle.load (pickled_file) sito web = pickle.load (pickled_file) english_french = pickle.load (pickled_file) tup = pickle.load (pickled_file) print ('Nome:' ) stampa (nome) stampa ('Sito web:') stampa (sito Web) stampa ('Englsh in francese:') stampa (inglese_french) stampa ('Tuple data:') print (tup)
L'output dello script precedente è:
Nome: Sito Web Abder: http://abder.io Englsh in francese: 'car': 'voiture', 'pen': 'stylo', 'paper': 'papier' Tuple data: (31, 'abder' , 4.0)
Come con il Pickler
classe, possiamo riscrivere lo script sopra usando il Unpickler
classe nel salamoia
modulo, come segue:
dall'importazione pickle Unpickler pickled_file = open ('pickled_file.pickle') u = Unpickler (pickled_file) name = u.load (); sito web = u.load (); english_french = u.load (); tup = u.load () print ('Name:') print (nome) print ('Sito web:') print (sito Web) print ('English to French:') print (english_french) print ('Tuple data:') stampa (TUP)
Si noti che le variabili devono essere scritte e lette nello stesso ordine per ottenere l'output desiderato. Per evitare problemi qui, possiamo usare un dizionario per amministrare i dati, come segue:
import pickle name = Sito web 'Abder' = 'http://abder.io' english_french = 'paper': 'papier', 'pen': 'stylo', 'car': 'voiture' # dizionario tup = ( 31, 'abder', 4.0) # tuple pickled_file = open ('pickled_file.pickle', 'w') data = 'name': name, 'website': sito web, 'english_french_dictionary': english_french, 'tuple': tuple pickle.dump (data, pickled_file)
Per ripristinare (caricare) i dati sottoposti a picking nello script sopra, possiamo fare quanto segue:
import pickle pickled_file = open ('pickled_file.pickle') data = pickle.load (pickled_file) name = data ['name'] website = data ['website'] english_french = data ['english_french_dictionary'] tup = data ['tupla '] stampa (' Nome: ') stampa (nome) stampa (' Sito web: ') stampa (sito Web) stampa (' Inglese a francese: ') stampa (inglese_french) stampa (' Tuple data: ') print (tup)
Bene, questa sembra una combinazione interessante. Se ti stai chiedendo cosa sono i panda, puoi imparare di più su di loro dal tutorial Introducing Pandas. La struttura di base dei dati di panda
è chiamato dataframe
, una struttura dati tabellare composta da colonne e righe ordinate.
Prendiamo un esempio di dataframe
dal tutorial di Pandas:
import panda come pd name_age = 'Name': ['Ali', 'Bill', 'David', 'Hany', 'Ibtisam'], 'Age': [32, 55, 20, 43, 30] data_frame = pd.DataFrame (name_age)
Al fine di decapare il nostro dataframe
, possiamo usare il to_pickle ()
funzione, come segue:
data_frame.to_pickle ( 'my_panda.pickle')
Per ripristinare (caricare) il sottaceto dataframe
, possiamo usare il read_pickle ()
funzione, come segue:
restore_data_frame = pd.read_pickle ('my_panda.pickle')
Mettendo insieme ciò che abbiamo menzionato in questa sezione, questo è ciò che la sceneggiatura che carica e carica un oggetto pandas assomiglia a:
import panda come pd name_age = 'Name': ['Ali', 'Bill', 'David', 'Hany', 'Ibtisam'], 'Age': [32, 55, 20, 43, 30] data_frame = pd.DataFrame (name_age) data_frame.to_pickle ('my_panda.pickle') restore_data_frame = pd.read_pickle ('my_panda.pickle') stampa (restore_data_frame)
In questo tutorial, ho coperto un modulo interessante chiamato salamoia
. Abbiamo visto con quanta facilità questo modulo ci permette di immagazzinare oggetti Python per scopi diversi, come usare l'oggetto con un altro programma Python, trasferire l'oggetto attraverso una rete, salvare l'oggetto per un uso futuro, ecc. Possiamo semplicemente mettere sott'occhio l'oggetto Python e desponi (carica) quando vogliamo ripristinare l'oggetto originale.
Non esitate a vedere ciò che abbiamo a disposizione per la vendita e per studiare nel mercato, e non esitate a fare domande e fornire il vostro prezioso feedback utilizzando il feed qui sotto.