Analisar um arquivo YAML em Python

Este tutorial demonstrará diferentes maneiras de analisar um arquivo YAML em Python.

YAML é um padrão de serialização de dados usado como um tipo de arquivo para armazenar arquivos de configuração ou propriedade em um projeto. O YAML geralmente substitui os arquivos de configuração XML ou JSON típicos porque os arquivos são mais fáceis de serializar do que os dois tipos de arquivo.

Use o pacote PyYAML para analisar YAML em Python

pyyaml é um pacote Python que fornece utilitários para analisar e manipular arquivos YAML dentro do Python.

O primeiro passo a fazer é instalar pyyaml usando pip uma vez que não está prontamente disponível para Python.

pip install pyyaml 

Para usuários do Python 3.x, use pip3 em vez de pip.

pip3 install pyyaml

Agora que a instalação está concluída, prossiga para analisar um arquivo YAML de amostra. Um arquivo YAML sempre terá três traços --- no início do arquivo para denotar o início de um novo documento YAML.

Observe que os espaços devem ser usados ​​exclusivamente ao recuar arquivos YAML, pois esses arquivos não reconhecerão os espaços de tabulação como recuos.

Os arquivos YAML podem ter uma extensão .yaml ou .yml.

  • sample.yaml
---
	name: "John"
	age: 23
	isMale: true
	hobbies:
		- swimming
		- fishing
		- diving

Para ler o arquivo YAML fornecido em Python, importe o módulo yaml primeiro. Depois, abra o arquivo yaml usando a função open(). O módulo yaml tem uma função predefinida load(), que aceita um arquivo como argumento, carrega um arquivo YAML em Python e o converte em um tipo de dados de objeto Python.

import yaml

with open('sample.yaml', 'r') as f:
  print(yaml.load(f))

Se você imprimir a saída de yaml.load(), ele exibirá o conteúdo do arquivo YAML em um formato de objeto Python.

Resultado:

{'name': 'John', 'age': 23, 'isMale': True, 'hobbies': ['swimming', 'fishing', 'diving']}

Para ter certeza de que o arquivo YAML existe e não está corrompido, seguro de usar, podemos adicionar um bloco try e capturar a exceção usando o objeto de erro embutido no módulo yaml YAMLError. Outra camada para tornar o código mais seguro de usar é substituir a função load() por safe_load(), que valida o arquivo YAML antes de carregá-lo.

import yaml

with open("sample.yaml", 'r') as stream:
    try:
        print(yaml.safe_load(stream))
    except yaml.YAMLError as exc:
        print(exc)

Essa solução tem a mesma saída da solução anterior, embora seja uma abordagem muito mais segura para analisar um arquivo YAML em Python.

Em resumo, a análise de um arquivo YAML em Python é facilmente alcançável usando o módulo yaml. Certifique-se de executar pip install pyyaml antes de usar o módulo, pois ele não está prontamente integrado.

É sempre uma boa prática encapsular as funções de manipulação de arquivo com blocos try-except para garantir que a manipulação de arquivo ocorra sem problemas e seja segura para ser executada.