Python

Comment lire et écrire des fichiers TOML à l'aide de Python

Comment lire et écrire des fichiers TOML à l'aide de Python
TOML, abréviation de « Tom's Obvious Minimal Language », est un format de fichier relativement nouveau et populaire qui se concentre sur une sémantique minimale pour l'écriture de fichiers de configuration. Le format de fichier a été créé par Tom Preston-Werner, l'ancien PDG de GitHub. Au moment de la rédaction de cet article, la première release candidate de la version 1.0.0 a été tagué, donc la spécification est plus ou moins finalisée. Cet article donnera une brève introduction au format de fichier TOML et décrira comment ce format de fichier peut être utilisé dans les applications et les scripts Python.

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 python3
importer 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=objet à 0x7f3506b3d850>), 'son' : True, 'utilisateur' : 'profile' : 'nom' : 'profile1',
'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 python3
importer 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.

OpenTTD contre Simutrans
Créer votre propre simulation de transport peut être amusant, relaxant et extrêmement attrayant. C'est pourquoi vous devez vous assurer que vous essay...
Tutoriel OpenTTD
OpenTTD est l'un des jeux de simulation d'entreprise les plus populaires. Dans ce jeu, vous devez créer une merveilleuse entreprise de transport. Cepe...
SuperTuxKart pour Linux
SuperTuxKart est un excellent titre conçu pour vous apporter l'expérience Mario Kart gratuitement sur votre système Linux. C'est assez stimulant et am...