Pitão

Como ler e gravar arquivos TOML usando Python

Como ler e gravar arquivos TOML usando Python
TOML, abreviação de “Tom's Obvious Minimal Language,” é um formato de arquivo relativamente novo e popular que se concentra na semântica mínima para escrever arquivos de configuração. O formato do arquivo foi criado por Tom Preston-Werner, ex-CEO do GitHub. Na época em que este artigo foi escrito, o primeiro candidato a lançamento da versão 1.0.0 foi marcado, então a especificação está mais ou menos finalizada. Este artigo fornecerá uma breve introdução ao formato de arquivo TOML e descreverá como esse formato de arquivo pode ser usado em aplicativos e scripts Python.

Exemplo de arquivo de configuração TOML

A especificação para TOML inclui o uso de pares chave-valor com distinção entre maiúsculas e minúsculas. As teclas estão no lado esquerdo, enquanto os valores estarão no lado direito; esses termos são separados em cada lado por um sinal de igual. Os pares de valores-chave são idênticos à sintaxe de declaração da variável que você verá na maioria das linguagens de programação. Você também pode definir tabelas e subtabelas (seções e subseções) entre colchetes para manter pares de valores-chave organizados para lógica de análise aprimorada e aplicação em seus programas. Os valores podem ser dos tipos string, inteiro, flutuante, booleano, matriz e hora e data. TOML permite o uso da sintaxe de pontos para que você possa definir uma tabela (seção) como “tabela.subtabela ”ou uma chave como“ chave.identificador ”, também. A extensão de arquivo usada para um arquivo TOML é .toml. Abaixo está um exemplo abreviado de um arquivo TOML:

name = "Jogo para PC"
[padrão]
profile_name = "Perfil"
player_name = "Jogador"
profile_created = 1979-05-27T07: 32: 00-08: 00
som = verdadeiro
[do utilizador]
[do utilizador.perfil]
nome = "perfil1"
player_name = "jogador1"
classe = "guerreiro"
[do utilizador.definições]
som = falso
[default_inventory]
guerreiro = [["espada", "escudo"], ["armadura de placa", "elmo de placa"]]
mago = [["cajado", "varinha"], ["manto", "capuz"]]
items = [
"Poção de saúde",
"antídoto",
"poção de mana"
]

Para referência, o mesmo arquivo de configuração é escrito em JSON abaixo:


"nome": "Jogo para PC",
"padrão":
"profile_name": "Perfil",
"player_name": "Player",
"profile_created": "1979-05-27T15: 32: 00.000Z ",
"som": verdadeiro
,
"do utilizador":
"perfil":
"nome": "perfil1",
"player_name": "player1",
"classe": "guerreiro"
,
"definições":
"som": falso

,
"default_inventory":
"Guerreiro": [
[
"espada",
"escudo"
],
[
"armadura de placa",
"elmo de placa"
]
],
"mago": [
[
"pessoal",
"varinha"
],
[
"manto",
"de capuz"
]
],
"Itens": [
"Poção de saúde",
"antídoto",
"poção de mana"
]

Diferenças entre formatos de arquivo JSON e INI

TOML é semelhante aos formatos JSON e INI de muitas maneiras, com algumas diferenças que podem determinar qual formato de arquivo você deseja usar. O formato de arquivo TOML enfatiza a legibilidade humana e parece muito mais limpo para ler. Os arquivos INI não são compatíveis com seções aninhadas e pares de valores-chave aninhados. Ao contrário de JSON, TOML permite comentários (com o símbolo #). Dados aninhados longos em um arquivo JSON podem ser gravados em TOML em apenas algumas linhas.

No entanto, pode ser confuso identificar adequadamente a estrutura em longas hierarquias aninhadas em TOML, enquanto em JSON a estrutura é muito mais clara, embora os dados aninhados possam parecer prolixos. TOML é projetado principalmente para arquivos de configuração e não para grandes conjuntos de dados estruturados, enquanto JSON é adequado para qualquer escala de dados estruturados.

O Módulo Python TOML

Bibliotecas padrão Python não têm suporte para análise de dados TOML, no momento em que este artigo foi escrito. Isso pode mudar após a versão 1 do TOML.0.0 é lançado. Por enquanto, você terá que usar um módulo Python de terceiros chamado toml. Você pode instalar este módulo no Ubuntu usando um dos comandos abaixo:

$ sudo apt install python3-toml
$ pip3 install toml

Analisando um arquivo TOML usando o módulo Python TOML

Analisar um arquivo TOML usando o módulo python3-toml é bastante simples. Você pode usar o “toml.load ”método para analisar todo o arquivo, ou você pode usar o“ toml.carrega ”método para analisar qualquer par de valores-chave formatado em TOML específico. Assumindo um “dado.arquivo toml ”contém as strings formatadas TOML mencionadas no exemplo acima, o código abaixo irá analisar e imprimir os dados TOML como um dicionário Python:

#!/ usr / bin / env python3
importar toml
imprimir (toml.Carregar dados.toml "))

Executar o código acima produzirá a seguinte saída:

'nome': 'Jogo para PC', 'padrão': 'nome_do_perfil': 'Perfil', 'nome_do_jogador': 'Jogador',
'profile_created': datetime.datetime (1979, 5, 27, 7, 32, tzinfo =objeto em 0x7f3506b3d850>), 'som': Verdadeiro, 'usuário': 'perfil': 'nome': 'perfil1',
'player_name': 'player1', 'class': 'warrior', 'settings': 'sound': False,
'default_inventory': 'guerreiro': [['espada', 'escudo'], ['armadura de placa', 'elmo de placa']],
'mago': [['cajado', 'varinha'], ['manto', 'capuz']], 'itens': ['poção da saúde', 'antídoto',
'poção de mana']

Agora que você tem um objeto de dicionário Python, pode implementar qualquer lógica em seu programa para lidar com os dados do dicionário.

Descarregando um dicionário Python como dados formatados em TOML

Um dicionário Python pode ser despejado em strings formatadas TOML usando o “toml.despeja ”, ou o objeto pode ser despejado em um arquivo usando“ toml.método de despejo. O exemplo abaixo converterá um objeto de dicionário em strings formatadas em TOML:

#!/ usr / bin / env python3
importar toml
data = toml.Carregar dados.toml ")
imprimir (toml.despejos (dados))

Executar o código acima produzirá a seguinte saída:

name = "Jogo para PC"
[padrão]
profile_name = "Perfil"
player_name = "Jogador"
profile_created = 1979-05-27T07: 32: 00-08: 00
som = verdadeiro

[default_inventory]
guerreiro = [["espada", "escudo",], ["armadura de placa", "elmo de placa",],]
mago = [["cajado", "varinha",], ["manto", "capuz",],]
items = ["poção da saúde", "antídoto", "poção de mana",]

[do utilizador.perfil]
nome = "perfil1"
player_name = "jogador1"
classe = "guerreiro"
[do utilizador.definições]
som = falso

Para converter um objeto de dicionário em uma string formatada TOML e armazená-lo em um arquivo, você pode usar o “toml.dump (dictionary_object, output_file) ”método.

Conclusão

Um arquivo TOML em termos mais simples é apenas um arquivo de configuração INI com melhor estrutura e sintaxe, facilitando a análise e melhor legibilidade. O formato de arquivo TOML é frequentemente comparado ao formato de arquivo JSON, mas além de seu uso em arquivos de configuração, TOML não tem muita utilidade. JSON, por outro lado, é muito mais versátil e pode ser usado em diferentes casos de uso que requerem qualquer tipo de estrutura de dados.

WinMouse permite que você personalize e melhore o movimento do ponteiro do mouse no PC com Windows
Se você quiser melhorar as funções padrão do ponteiro do mouse, use um freeware WinMouse. Ele adiciona mais recursos para ajudá-lo a obter o máximo do...
O botão esquerdo do mouse não funciona no Windows 10
Se você estiver usando um mouse dedicado com seu laptop ou computador desktop, mas o o botão esquerdo do mouse não funciona no Windows 10/8/7 por algu...
O cursor pula ou se move aleatoriamente enquanto digita no Windows 10
Se você descobrir que o cursor do mouse pula ou se move por conta própria, de forma automática e aleatória ao digitar em um laptop ou computador com W...