Pitone

Come leggere e scrivere file TOML usando Python

Come leggere e scrivere file TOML usando Python
TOML, abbreviazione di "Tom's Obvious Minimal Language", è un formato di file relativamente nuovo e popolare che si concentra sulla semantica minima per la scrittura dei file di configurazione. Il formato del file è stato creato da Tom Preston-Werner, l'ex CEO di GitHub. Al momento della stesura di questo articolo, la prima release candidate della versione 1.0.0 è stato taggato, quindi la specifica è più o meno finalizzata. Questo articolo fornirà una breve introduzione al formato di file TOML e descriverà come questo formato di file può essere utilizzato nelle applicazioni e negli script Python.

Esempio di file di configurazione TOML

La specifica per TOML include l'uso di coppie chiave-valore con distinzione tra maiuscole e minuscole. I tasti sono a sinistra, mentre i valori a destra; questi termini sono separati su entrambi i lati da un segno di uguale. Le coppie chiave-valore sono identiche alla sintassi della dichiarazione di variabile che vedrai nella maggior parte dei linguaggi di programmazione. Puoi anche definire tabelle e sottotabelle (sezioni e sottosezioni) tra parentesi quadre per mantenere le coppie chiave-valore organizzate per una migliore logica di analisi e applicazione nei tuoi programmi. I valori possono essere di tipo stringa, intero, float, booleano, array e ora e data. TOML consente l'uso della sintassi del punto in modo da poter definire una tabella (sezione) come "tabella.sottotabella" o una chiave come "chiave.identificatore", anche. L'estensione del file utilizzata per un file TOML è .tomi. Di seguito è riportato un esempio abbreviato di un file TOML:

nome = "Gioco per PC"
[predefinito]
nome_profilo = "Profilo"
player_name = "Giocatore"
profile_created = 1979-05-27T07:32:00-08:00
suono = vero
[utente]
[utente.profilo]
nome = "profilo1"
nome_giocatore = "giocatore1"
classe = "guerriero"
[utente.impostazioni]
suono = falso
[inventario_predefinito]
guerriero = [["spada", "scudo"], ["armatura a piastre", "elmo a piastre"] ]
mago = [["bastone", "bacchetta"], ["accappatoio", "cappuccio"]]
elementi = [
"pozione di salute",
"antidoto",
"pozione di mana"
]

Per riferimento, lo stesso file di configurazione è scritto in JSON di seguito:


"nome": "Gioco per PC",
"predefinito":
"nome_profilo": "Profilo",
"nome_giocatore": "Giocatore",
"profile_created": "1979-05-27T15:32:00.000Z",
"suono": vero
,
"utente":
"profilo":
"nome": "profilo1",
"nome_giocatore": "giocatore1",
"classe": "guerriero"
,
"impostazioni":
"suono": falso

,
"default_inventory":
"guerriero": [
[
"spada",
"scudo"
],
[
"armatura a piastre",
"elmo a piastra"
]
],
"mago": [
[
"personale",
"bacchetta"
],
[
"vestito",
"cappuccio"
]
],
"elementi": [
"pozione di salute",
"antidoto",
"pozione di mana"
]

Differenze tra i formati di file JSON e INI

TOML è simile ai formati JSON e INI in molti modi, con alcune differenze che possono determinare quale formato di file si desidera utilizzare. Il formato di file TOML enfatizza la leggibilità umana e sembra molto più pulito da leggere. I file INI non supportano le sezioni nidificate e le coppie chiave-valore nidificate. A differenza di JSON, TOML consente commenti (con il simbolo #). I dati lunghi annidati in un file JSON possono essere scritti in TOML in poche righe.

Tuttavia, può essere fonte di confusione identificare correttamente la struttura in gerarchie nidificate lunghe in TOML, mentre in JSON la struttura è molto più chiara, anche se i dati nidificati possono apparire dettagliati. TOML è progettato principalmente per i file di configurazione e non per grandi set di dati strutturati, mentre JSON è adatto a qualsiasi scala di dati strutturati.

Il modulo Python TOML

Le librerie standard Python attualmente non hanno alcun supporto per l'analisi dei dati TOML, al momento della stesura di questo articolo. Questo potrebbe cambiare dopo la versione TOML 1.0.0 viene rilasciato. Per il momento, dovrai usare un modulo Python di terze parti chiamato tomi. Puoi installare questo modulo in Ubuntu usando uno dei comandi seguenti:

$ sudo apt install python3-toml
$ pip3 install toml

Analisi di un file TOML utilizzando il modulo TOML di Python

L'analisi di un file TOML utilizzando il modulo python3-toml è abbastanza semplice. Puoi usare il "toml.load" per analizzare l'intero file, oppure puoi usare il metodo "toml.load" per analizzare qualsiasi coppia chiave-valore formattata TOML specifica specific. Supponendo un "dati.toml" contiene le stringhe formattate TOML menzionate nell'esempio sopra, il codice seguente analizzerà e stamperà i dati TOML come dizionario Python:

#!/usr/bin/env python3
import toml
stampa (toml.caricare dati.tom"))

L'esecuzione del codice sopra produrrà il seguente output:

'nome': 'Gioco PC', 'predefinito': 'nome_profilo': 'Profilo', 'nome_giocatore': 'Giocatore',
'profile_created': datetime.datetime(1979, 5, 27, 7, 32, tzinfo=oggetto in 0x7f3506b3d850>), 'sound': True, 'user': 'profile': 'name': 'profile1',
'player_name': 'player1', 'class': 'warrior', 'settings': 'sound': False,
'default_inventory': 'guerriero': [['spada', 'scudo'], ['armatura a piastre', 'elmo a piastre']],
'mago': [['bastone', 'bacchetta'], ['accappatoio', 'cappuccio']], 'oggetti': ['pozione della salute', 'antidoto',
'pozione di mana']

Ora che hai un oggetto dizionario Python, puoi implementare qualsiasi logica nel tuo programma per gestire i dati del dizionario.

Scaricare un dizionario Python come dati formattati TOML

Un dizionario Python può essere scaricato in stringhe formattate TOML usando il "toml.dumps", oppure l'oggetto può essere scaricato in un file usando "toml.dump” metodo. L'esempio seguente convertirà un oggetto dizionario nito stringhe formattate TOML:

#!/usr/bin/env python3
import toml
data = toml.caricare dati.tom")
stampa (toml.discariche (dati))

L'esecuzione del codice precedente produrrà il seguente output:

nome = "Gioco per PC"
[predefinito]
nome_profilo = "Profilo"
player_name = "Giocatore"
profile_created = 1979-05-27T07:32:00-08:00
suono = vero

[inventario_predefinito]
guerriero = [ [ "spada", "scudo",], [ "armatura a piastre", "elmo a piastre",],]
mago = [ [ "bastone", "bacchetta",], [ "vestito", "cappuccio",],]
item = [ "pozione di salute", "antidoto", "pozione di mana",]

[utente.profilo]
nome = "profilo1"
nome_giocatore = "giocatore1"
classe = "guerriero"
[utente.impostazioni]
suono = falso

Per convertire un oggetto dizionario in una stringa formattata TOML e memorizzarlo in un file, puoi usare il "toml.dump(dictionary_object, output_file)” metodo.

Conclusione

Un file TOML in termini più semplici è solo un file di configurazione INI con una struttura e una sintassi migliori, che facilitano l'analisi più semplice e una migliore leggibilità. Il formato del file TOML viene spesso confrontato con il formato del file JSON, ma a parte il suo utilizzo nei file di configurazione, TOML non ha molte utilità. JSON, d'altra parte, è molto più versatile e può essere utilizzato in diversi casi d'uso che richiedono qualsiasi tipo di struttura dati.

Il cursore salta o si sposta in modo casuale durante la digitazione in Windows 10
Se scopri che il cursore del mouse salta o si sposta da solo, automaticamente, in modo casuale durante la digitazione nel laptop o nel computer Window...
Come invertire la direzione di scorrimento del mouse e dei touchpad in Windows 10
Topo e Touchpads non solo rende l'elaborazione semplice, ma anche più efficiente e richiede meno tempo. Non possiamo immaginare una vita senza questi ...
Come modificare il puntatore del mouse e le dimensioni, il colore e lo schema del cursore su Windows 10
Il puntatore del mouse e il cursore in Windows 10 sono aspetti molto importanti del sistema operativo. Questo si può dire anche per altri sistemi oper...