Exemplo de arquivo de configuração do toml
A especificação para Toml inclui o uso de pares de valor-chave sensíveis à caixa. As chaves estão do lado esquerdo, enquanto os valores serão do lado direito; Estes termos são separados em ambos os lados por um sinal igual. Os pares de valor-chave são idênticos à sintaxe da declaração variável que você verá na maioria das linguagens de programação. Você também pode definir tabelas e subtáveis (seções e subseções) em colchetes para manter os pares de valores-chave organizados para melhorar a lógica de análise e a aplicação em seus programas. Os valores podem ser de tipos de corda, número inteiro, flutuante, booleano, matriz e hora e data. Toml permite o uso da sintaxe do ponto para que você possa definir uma tabela (seção) como “Tabela.subtable "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:
Nome = "PC Game"Para referência, o mesmo arquivo de configuração é escrito no JSON abaixo:
Diferenças entre os formatos de arquivo JSON e INI
Toml é semelhante aos formatos JSON e INI de várias maneiras, com algumas diferenças que podem determinar qual formato de arquivo você deseja usar. O formato do arquivo Toml enfatiza a legibilidade humana e parece muito mais limpo para ler. Os arquivos INI não suportam seções aninhadas e pares de valor-chave aninhados. Ao contrário de JSON, Toml permite comentários (com o símbolo #). Dados longos aninhados em um arquivo JSON podem ser escritos 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, mesmo que os dados aninhados possam parecer detalhados. Toml é projetado principalmente para arquivos de configuração e não para grandes conjuntos de dados estruturados, enquanto o JSON é adequado para qualquer escala de dados estruturados.
O módulo Python Toml
Atualmente, as bibliotecas padrão do Python não têm suporte para analisar dados do TOML, no momento da redação deste artigo. Isso pode mudar após o toml versão 1.0.0 é liberado. 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-tomlAnalisando um arquivo TOML usando o módulo Python Toml
Analisar um arquivo TOML usando o módulo Python3-Toml é bastante direto. Você pode usar o “toml.Método carregar ”para analisar o arquivo inteiro, ou você pode usar o“ toml.Método carrega ”para analisar qualquer par específico de valor de chave TOML. Assumindo um “dados.O arquivo toml ”contém as cordas formatadas TOML mencionadas no exemplo acima, o código abaixo analisará e imprimirá os dados do Toml como um dicionário Python:
#!/usr/bin/Env Python3A execução do código acima produzirá a seguinte saída:
'Nome': 'PC Game', 'Default': 'perfil_name': 'perfil', 'player_name': 'player',Agora que você tem um objeto de dicionário Python, você pode implementar qualquer lógica em seu programa para lidar com os dados do dicionário.
Despejando um dicionário python como dados formatados com Toml
Um dicionário Python pode ser despejado em cordas formatadas com o “toml.Método de despejos ", ou o objeto pode ser despejado em um arquivo usando“ Toml.Método do despejo ”. O exemplo abaixo converterá um objeto de dicionário Nito Toml Formatted Strings:
#!/usr/bin/Env Python3A execução do código acima produzirá a seguinte saída:
Nome = "PC Game"Para converter um objeto de dicionário em uma corda formatada com 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 da INI com melhor estrutura e sintaxe, facilitando a análise mais fácil e melhor legibilidade. O formato do arquivo TOML é frequentemente comparado com o formato de arquivo JSON, mas, além de seu uso em arquivos de configuração, Toml não possui muita utilidade. JSON, por outro lado, é muito mais versátil e pode ser usado em diferentes casos de uso que exigem qualquer tipo de estrutura de dados.