Exemple de fichier de configuration TOML
La spécification pour TOML inclut l'utilisation de paires clé-valeur sensibles à la casse. Les clés sont sur le côté gauche, tandis que les valeurs seront sur le côté droit ; ces termes sont séparés de chaque côté par un signe égal. Les paires clé-valeur sont identiques à la syntaxe de déclaration de variable que vous verrez dans la plupart des langages de programmation. Vous pouvez également définir des tables et des sous-tables (sections et sous-sections) entre crochets pour garder les paires clé-valeur organisées pour une logique d'analyse et une application améliorées dans vos programmes. Les valeurs peuvent être de type chaîne, entier, flottant, booléen, tableau et heure et date. TOML permet l'utilisation de la syntaxe à points afin que vous puissiez définir un tableau (section) comme « tableau.sous-table" ou une clé comme "clé.identifiant », ainsi. L'extension de fichier utilisée pour un fichier TOML est .toml. Voici un exemple abrégé d'un fichier TOML :
nom = "Jeu PC"[défaut]
profile_name = "Profil"
player_name = "Joueur"
profile_created = 1979-05-27T07:32:00-08:00
son = vrai
[utilisateur]
[utilisateur.profil]
nom = "profil1"
player_name = "player1"
classe = "guerrier"
[utilisateur.Les paramètres]
son = faux
[inventaire_par défaut]
guerrier = [ ["épée", "bouclier"], ["armure de plaques", "casque de plaques"] ]
mage = [["personnel", "baguette"], ["robe", "capot"]]
éléments = [
"potion de vie",
"antidote",
"potion de mana"
]
Pour référence, le même fichier de configuration est écrit en JSON ci-dessous :
"nom": "Jeu PC",
"défaut":
"profile_name": "Profil",
"player_name": "Joueur",
"profile_created": "1979-05-27T15:32:00.000Z",
"son": vrai
,
"utilisateur":
"profil":
"nom": "profil1",
"player_name": "player1",
"classe": "guerrier"
,
"Les paramètres":
"son": faux
,
"default_inventory":
"guerrier": [
[
"épée",
"bouclier"
],
[
"armure de plaques",
" barre de plaque "
]
],
"mage": [
[
"Personnel",
"baguette magique"
],
[
"peignoir",
"capuche"
]
],
"éléments": [
"potion de vie",
"antidote",
"potion de mana"
]
Différences entre les formats de fichiers JSON et INI
TOML est similaire aux formats JSON et INI à bien des égards, avec quelques différences qui peuvent déterminer le format de fichier que vous souhaitez utiliser. Le format de fichier TOML met l'accent sur la lisibilité humaine et semble beaucoup plus propre à lire. Les fichiers INI ne prennent pas en charge les sections imbriquées et les paires clé-valeur imbriquées. Contrairement à JSON, TOML autorise les commentaires (avec le symbole #). Les longues données imbriquées dans un fichier JSON peuvent être écrites en TOML en quelques lignes seulement.
Cependant, il peut être déroutant d'identifier correctement la structure dans de longues hiérarchies imbriquées dans TOML, alors qu'en JSON, la structure est beaucoup plus claire, même si les données imbriquées peuvent sembler verbeuses. TOML est principalement conçu pour les fichiers de configuration et non pour les grands ensembles de données structurées, tandis que JSON convient à toute échelle de données structurées.
Le module Python TOML
Les bibliothèques standard Python n'ont actuellement aucun support pour l'analyse des données TOML, au moment de la rédaction de cet article. Cela peut changer après TOML version 1.0.0 est libéré. Pour le moment, vous devrez utiliser un module Python tiers appelé toml. Vous pouvez installer ce module dans Ubuntu en utilisant l'une des commandes ci-dessous :
$ sudo apt installer python3-toml$ pip3 installer toml
Analyser un fichier TOML à l'aide du module Python TOML
L'analyse d'un fichier TOML à l'aide du module python3-toml est assez simple. Vous pouvez soit utiliser le « toml.load » pour analyser l'intégralité du fichier, ou vous pouvez utiliser la méthode « toml.loads" pour analyser toute paire clé-valeur formatée TOML spécifique. En supposant une « données.toml" contient les chaînes au format TOML mentionnées dans l'exemple ci-dessus, le code ci-dessous analysera et imprimera les données TOML en tant que dictionnaire python :
#!/usr/bin/env python3importer toml
imprimer (toml.charger("données.toml"))
L'exécution du code ci-dessus produira la sortie suivante :
'name' : 'PC Game', 'default' : 'profile_name' : 'Profile', 'player_name' : 'Player','profile_created' : date/heure.datetime (1979, 5, 27, 7, 32, tzinfo=
'player_name' : 'player1', 'class' : 'warrior', 'settings' : 'sound' : False,
'default_inventory': 'warrior': [['sword', 'shield'], ['plate armor', 'plate helm']],
'mage' : [['staff', 'wand'], ['robe', 'hood']], 'items' : ['health potion', 'antidote',
'potion de mana']
Maintenant que vous avez un objet dictionnaire python, vous pouvez implémenter n'importe quelle logique dans votre programme pour gérer les données du dictionnaire.
Vidage d'un dictionnaire Python en tant que données au format TOML
Un dictionnaire python peut être vidé dans des chaînes au format TOML à l'aide du " toml.dumps », ou l'objet peut être vidé dans un fichier à l'aide de « toml.méthode « vider ». L'exemple ci-dessous convertira un objet dictionnaire en chaînes au format TOML :
#!/usr/bin/env python3importer toml
données = toml.charger("données.toml")
imprimer (toml.vidages (données))
L'exécution du code ci-dessus produira la sortie suivante :
nom = "Jeu PC"[défaut]
profile_name = "Profil"
player_name = "Joueur"
profile_created = 1979-05-27T07:32:00-08:00
son = vrai
[inventaire_par défaut]
guerrier = [ [ "épée", "bouclier",], [ "armure de plaques", "heaume en plaques",],]
mage = [ [ "bâton", "baguette",], [ "robe", "capot",],]
items = [ "potion de santé", "antidote", "potion de mana",]
[utilisateur.profil]
nom = "profil1"
player_name = "player1"
classe = "guerrier"
[utilisateur.Les paramètres]
son = faux
Pour convertir un objet dictionnaire en une chaîne au format TOML et le stocker dans un fichier, vous pouvez utiliser le " toml.dump(dictionary_object, output_file)” méthode.
Conclusion
Un fichier TOML en termes plus simples n'est qu'un fichier de configuration INI avec une meilleure structure et syntaxe, facilitant une analyse plus facile et une meilleure lisibilité. Le format de fichier TOML est souvent comparé au format de fichier JSON, mais à part son utilisation dans les fichiers de configuration, TOML n'a pas beaucoup d'utilité. JSON, en revanche, est beaucoup plus polyvalent et peut être utilisé dans différents cas d'utilisation nécessitant n'importe quel type de structure de données.