Pitón

Cómo leer y escribir archivos TOML usando Python

Cómo leer y escribir archivos TOML usando Python
TOML, abreviatura de "Tom's Obvious Minimal Language", es un formato de archivo relativamente nuevo y popular que se centra en la semántica mínima para escribir archivos de configuración. El formato de archivo ha sido creado por Tom Preston-Werner, ex CEO de GitHub. En el momento en que se escribió este artículo, el primer candidato de lanzamiento de la versión 1.0.0 ha sido etiquetado, por lo que la especificación está más o menos finalizada. Este artículo ofrecerá una breve introducción al formato de archivo TOML y describirá cómo se puede utilizar este formato de archivo en aplicaciones y scripts de Python.

Ejemplo de archivo de configuración de TOML

La especificación para TOML incluye el uso de pares clave-valor que distinguen entre mayúsculas y minúsculas. Las teclas están en el lado izquierdo, mientras que los valores estarán en el lado derecho; estos términos están separados a ambos lados por un signo igual. Los pares clave-valor son idénticos a la sintaxis de declaración de variable que verá en la mayoría de los lenguajes de programación. También puede definir tablas y subtablas (secciones y subsecciones) entre corchetes para mantener los pares clave-valor organizados para mejorar la lógica de análisis y la aplicación en sus programas. Los valores pueden ser de tipo cadena, entero, flotante, booleano, matriz y de fecha y hora. TOML permite el uso de la sintaxis de puntos para que pueda definir una tabla (sección) como "tabla.subtabla "o una clave como" clave.identificador ", así. La extensión de archivo utilizada para un archivo TOML es .toml. A continuación se muestra un ejemplo abreviado de un archivo TOML:

name = "Juego de PC"
[defecto]
profile_name = "Perfil"
player_name = "Jugador"
profile_created = 1979-05-27T07: 32: 00-08: 00
sonido = verdadero
[usuario]
[usuario.perfil]
nombre = "perfil1"
player_name = "jugador1"
class = "guerrero"
[usuario.ajustes]
sonido = falso
[inventario_predeterminado]
guerrero = [["espada", "escudo"], ["armadura de placas", "yelmo de placas"]]
mago = [["bastón", "varita"], ["bata", "capucha"]]
items = [
"poción de salud",
"antídoto",
"poción de maná"
]

Como referencia, el mismo archivo de configuración está escrito en JSON a continuación:


"name": "Juego de PC",
"defecto":
"profile_name": "Perfil",
"player_name": "Jugador",
"profile_created": "1979-05-27T15: 32: 00.000Z ",
"sonido": verdadero
,
"usuario":
"perfil":
"nombre": "perfil1",
"player_name": "jugador1",
"clase": "guerrero"
,
"ajustes":
"sonido": falso

,
"default_inventory":
"guerrero": [
[
"espada",
"proteger"
],
[
"armadura de placas",
"Yelmo de placas"
]
],
"mago": [
[
"personal",
"varita mágica"
],
[
"túnica",
"capucha"
]
],
"artículos": [
"poción de salud",
"antídoto",
"poción de maná"
]

Diferencias entre formatos de archivo JSON e INI

TOML es similar a los formatos JSON e INI de muchas maneras, con algunas diferencias que pueden determinar qué formato de archivo querrá usar. El formato de archivo TOML enfatiza la legibilidad humana y parece mucho más limpio de leer. Los archivos INI no admiten secciones anidadas ni pares clave-valor anidados. A diferencia de JSON, TOML permite comentarios (con el símbolo #). Los datos anidados largos en un archivo JSON se pueden escribir en TOML en solo unas pocas líneas.

Sin embargo, puede resultar confuso identificar correctamente la estructura en jerarquías anidadas largas en TOML, mientras que en JSON la estructura es mucho más clara, aunque los datos anidados pueden parecer detallados. TOML está diseñado principalmente para archivos de configuración y no para grandes conjuntos de datos estructurados, mientras que JSON es adecuado para cualquier escala de datos estructurados.

El módulo Python TOML

Las bibliotecas estándar de Python no tienen actualmente ningún soporte para analizar datos TOML, en el momento de escribir este artículo. Esto puede cambiar después de la versión 1 de TOML.0.0 es lanzado. Por el momento, tendrá que utilizar un módulo de Python de terceros llamado toml. Puede instalar este módulo en Ubuntu usando uno de los siguientes comandos:

$ sudo apt install python3-toml
$ pip3 instalar toml

Análisis de un archivo TOML mediante el módulo TOML de Python

Analizar un archivo TOML usando el módulo python3-toml es bastante sencillo. Puede utilizar el "toml.load "para analizar el archivo completo, o puede utilizar el método" toml.cargas "para analizar cualquier par clave-valor con formato TOML específico. Suponiendo un "datos.toml ”contiene las cadenas con formato TOML mencionadas en el ejemplo anterior, el código siguiente analizará e imprimirá los datos TOML como un diccionario de Python:

#!/ usr / bin / env python3
importar toml
imprimir (toml.Cargar datos.toml "))

Ejecutar el código anterior producirá el siguiente resultado:

'name': 'PC Game', 'default': 'profile_name': 'Profile', 'player_name': 'Player',
'profile_created': fecha y hora.fecha y hora (1979, 5, 27, 7, 32, tzinfo =objeto en 0x7f3506b3d850>), 'sonido': True, 'usuario': 'perfil': 'nombre': 'perfil1',
'player_name': 'player1', 'class': 'warrior', 'settings': 'sound': False,
'default_inventory': 'guerrero': [['espada', 'escudo'], ['armadura de placas', 'yelmo de placas']],
'mago': [['bastón', 'varita'], ['bata', 'capucha']], 'artículos': ['poción de salud', 'antídoto',
'poción de maná']

Ahora que tiene un objeto de diccionario de Python, puede implementar cualquier lógica en su programa para manejar los datos del diccionario.

Volcado de un diccionario de Python como datos con formato TOML

Un diccionario de Python se puede volcar en cadenas formateadas TOML usando el "toml.dumps ", o el objeto se puede volcar en un archivo usando" toml.método de volcado. El siguiente ejemplo convertirá un objeto de diccionario nito cadenas formateadas TOML:

#!/ usr / bin / env python3
importar toml
datos = toml.Cargar datos.toml ")
imprimir (toml.volcados (datos))

Ejecutar el código anterior producirá el siguiente resultado:

name = "Juego de PC"
[defecto]
profile_name = "Perfil"
player_name = "Jugador"
profile_created = 1979-05-27T07: 32: 00-08: 00
sonido = verdadero

[inventario_predeterminado]
warrior = [["espada", "escudo",], ["armadura de placas", "yelmo de placas",],]
mago = [["bastón", "varita",], ["bata", "capucha",],]
items = ["poción de salud", "antídoto", "poción de maná",]

[usuario.perfil]
nombre = "perfil1"
player_name = "jugador1"
class = "guerrero"
[usuario.ajustes]
sonido = falso

Para convertir un objeto de diccionario en una cadena con formato TOML y almacenarlo en un archivo, puede usar el comando.método dump (dictionary_object, output_file) ”.

Conclusión

Un archivo TOML en términos más simples es solo un archivo de configuración INI con mejor estructura y sintaxis, lo que facilita el análisis y la legibilidad. El formato de archivo TOML a menudo se compara con el formato de archivo JSON, pero aparte de su uso en archivos de configuración, TOML no tiene mucha utilidad. JSON, por otro lado, es mucho más versátil y se puede usar en diferentes casos de uso que requieren cualquier tipo de estructura de datos.

Controle y administre el movimiento del mouse entre múltiples monitores en Windows 10
Administrador de mouse de doble pantalla le permite controlar y configurar el movimiento del mouse entre varios monitores, al ralentizar sus movimient...
WinMouse le permite personalizar y mejorar el movimiento del puntero del mouse en una PC con Windows
Si desea mejorar las funciones predeterminadas del puntero del mouse, use el software gratuito WinMouse. Agrega más funciones para ayudarlo a aprovech...
El botón de clic izquierdo del mouse no funciona en Windows 10
Si está utilizando un mouse dedicado con su computadora portátil o computadora de escritorio, pero el el botón izquierdo del mouse no funciona en Wind...