Accandare e sottaceto
Il modulo Shelve utilizza il modulo "Pickle" di Python sotto per serializzare i dati. La differenza principale tra moduli Shelve e Pickle è che Shelve può essere utilizzato per associare gli oggetti serializzati ai tasti. Queste chiavi possono essere utilizzate come identificatori nel tuo codice e puoi fare riferimento a loro per ottenere l'oggetto serializzato. Il sottaceto d'altra parte non fornisce un modo nativo per archiviare i dati serializzati in coppie di valore chiave, senza alcune soluzioni alternative o codice personalizzato. Pertanto, lo scaffale è più un modulo di convenienza per una facile serializzazione degli oggetti Python e può essere utilizzato per creare semplici database contenenti dati serializzati.
Uso di base e sintassi
È possibile aprire un file di database utilizzando il metodo "Apri" disponibile nel modulo Shelve. Questo metodo può essere usato come gestore di contesto in modo che quel file sia correttamente chiuso al termine della chiamata del metodo. Ecco un esempio di codice:
Scaffio di importazioneLa prima dichiarazione importa il modulo Shelve principale nel programma Python. Successivamente, usando "con scaffali.Apri "Call e contesto di contesto," Test.Il file db "è aperto come" db "in modalità di scrittura. Il file può avere qualsiasi nome ed estensione. Le ultime due dichiarazioni vengono utilizzate per creare due nuove coppie di valore chiave utilizzando la sintassi simile al dizionario di Python. Queste coppie di valore chiave vengono quindi memorizzate nel test.file db in forma serializzata.
Dopo aver eseguito il campione di codice sopra, se si apre il test.file db in un editor di testo, dovresti vedere alcuni dati simili a questo:
Come puoi vedere, i dati archiviati nel file non sono in forma leggibile dall'uomo. Tuttavia, se apri questo file usando Shelve, sarai in grado di recuperare coppie di valore chiave nel tuo programma Python. Ecco un esempio di codice:
Scaffio di importazioneLe coppie di valore chiave serializzate da Shelve sono identiche a un oggetto di tipo di dizionario in Python e supportano tutti i loro metodi. Quindi puoi fare riferimento agli oggetti fornendo una chiave in parenti quadrati. Nelle ultime due affermazioni, il valore di entrambe le chiavi viene recuperato utilizzando la sintassi simile al dizionario. Dopo aver eseguito il campione di codice sopra, è necessario ottenere il seguente output:
50Si noti che Python sceglie automaticamente un formato di file di database appropriato per Shelve, prendendo in considerazione il sistema operativo da cui viene eseguito il programma. Tuttavia, non influisce sull'uso del modulo Shelve e sulla funzionalità degli oggetti serializzati usandolo.
Ottenere tutte le coppie di valore chiave da un file di database creati utilizzando Shelve
Per ottenere tutte le chiavi e le coppie di valori, devi chiamare i metodi "tasti" e "valori", proprio come faresti con un oggetto di tipo di dizionario in Python. Ecco un esempio di codice:
Scaffio di importazioneCome puoi vedere nel campione di codice sopra, "elementi", "chiavi" e metodi "valori" sono stati chiamati per recuperare chiavi e valori. Queste chiavi e valori sono oggetti di tipo Shelve, quindi è necessario convertirli in un elenco o in qualsiasi altro iterabile per ottenere i loro valori effettivi. Dopo aver eseguito il campione di codice sopra, è necessario ottenere il seguente output:
[("mele", 50), ("arance", 80)]Nota che se si desidera solo iterare su chiavi e valori, puoi farlo usando per loop o qualsiasi altra istruzione senza convertire chiavi e valori in un elenco di Python o qualsiasi altro oggetto di questo tipo.
Puoi serializzare le funzioni e le classi usando Shelve
Puoi serializzare qualsiasi oggetto Python usando il modulo Shelve, persino funzioni e classi. Ecco un esempio che illustra la serializzazione di una funzione, recuperandola e quindi chiamandolo per fare alcuni calcoli.
Scaffio di importazioneÈ stata definita una nuova funzione chiamata "Square". Calcola il quadrato di un numero e lo restituisce. Successivamente, questa funzione viene serializzata usando Shelve e memorizzata nel test.File di database DB. La funzione serializzata viene quindi letta nella variabile "quadrata". Poiché la variabile quadrata è ora un'istanza della funzione quadrata definita in precedenza, puoi chiamarla per calcolare il quadrato di un numero.
Dopo aver eseguito il campione di codice sopra, è necessario ottenere il seguente output:
25Conclusione
La serializzazione è un processo di archiviazione di oggetti Python in un file di database in modo che possano essere recuperati in una forma che è esattamente lo stesso di come sono stati originariamente definiti prima di serializzare. Ciò consente di archiviare oggetti Python complessi in formato strutturato. Il modulo Shelve utilizza il modulo sottaceto per archiviare e recuperare gli oggetti Python serializzati. Utilizza la struttura della coppia di valore chiave per gestire gli oggetti serializzati, rendendo più facile gestirli.