yaml tutorial comprehensive guide yaml using python
Este tutorial YAML explica o que é YAML, conceitos básicos de YAML, como tipos de dados, validador YAML, analisador, editor, arquivos, etc. com a ajuda de exemplos de código usando Python:
O processamento de texto na ciência da computação ajuda os programadores a criar programas e aplicativos configuráveis. As linguagens de marcação desempenham um papel vital no armazenamento e troca de dados em um formato legível.
Além disso, os programadores usam linguagens de marcação como formatos de intercâmbio de dados comuns e padrão entre sistemas diferentes. Alguns exemplos das linguagens de marcação incluem HTML, XML, XHTML e JSON.
Compartilhamos informações sobre mais uma linguagem de marcação neste tutorial YAML fácil de seguir.
Este tutorial ajuda os leitores a encontrar respostas para as perguntas mencionadas abaixo. Os alunos podem dar os primeiros passos e entender o mistério das linguagens de marcação em geral e YAML em particular.
As perguntas incluem:
- Por que precisamos de linguagens de marcação?
- O que YAML significa?
- Por que YAML foi criado?
- Por que precisamos aprender YAML?
- Por que é importante hoje aprender YAML?
- Que tipo de dados posso armazenar em um YAML?
Este guia é útil para leitores experientes também porque discutimos conceitos no contexto de programação em geral e também no contexto de teste de software. Também abordaremos tópicos como serialização e desserialização aqui.
O que você aprenderá:
O que é YAML
Os criadores de YAML inicialmente a nomearam como 'Outra linguagem de marcação'. No entanto, com o tempo, a sigla mudou para “YAML Ain não é uma linguagem de marcação”. YAML é um acrônimo que se refere a si mesmo e é chamado de acrônimo recursivo.
Podemos fazer uso dessa linguagem para armazenar dados e configurações em um formato legível. YAML é uma linguagem elementar para aprender. Suas construções também são fáceis de entender.
Clark, Ingy e Oren criaram YAML para abordar as complexidades de compreensão de outras linguagens de marcação, que são difíceis de entender, e a curva de aprendizado também é mais íngreme do que aprender YAML.
Para tornar o aprendizado mais confortável, como sempre, utilizamos um exemplo de projeto. Hospedamos este projeto no Github com licença MIT para que qualquer pessoa possa fazer modificações e enviar uma solicitação de pull, se necessário.
Você pode clonar o projeto usando o comando abaixo.
git clone git@github.com:h3xh4wk/yamlguide.git
No entanto, se necessário, você pode baixe o zip arquivo para o código e os exemplos.
Como alternativa, os leitores podem clonar este projeto com a ajuda do IntelliJ IDEA. Conclua a seção sobre pré-requisitos para instalar o Python e configurá-lo com o IntelliJ IDEA antes de clonar o projeto.

Por que precisamos de linguagens de marcação
É impossível escrever tudo em código de software. É porque precisamos manter o código de vez em quando e precisamos abstrair as especificações para arquivos externos ou bancos de dados.
É uma prática recomendada reduzir o código ao mínimo possível e criá-lo de uma maneira que não precise de modificação para várias entradas de dados necessárias.
Por exemplo, podemos escrever uma função para obter dados de entrada de um arquivo externo e imprimir seu conteúdo linha por linha, em vez de escrever o código e os dados juntos em um único arquivo.
É considerada uma prática recomendada porque separa as preocupações de criar os dados e criar o código. A abordagem de programação de abstrair os dados do código garante fácil manutenção.
As linguagens de marcação facilitam o armazenamento de informações hierárquicas em um formato mais acessível e leve. Esses arquivos podem ser trocados entre programas pela Internet sem consumir muita largura de banda e suportam os protocolos mais comuns.
Esses idiomas seguem um padrão universal e oferecem suporte a várias codificações para oferecer suporte a caracteres de quase todos os idiomas falados no mundo.
perguntas e respostas da entrevista do desenvolvedor do banco de dados pdf
A melhor coisa sobre as linguagens de marcação é que seu uso geral não está associado a nenhum comando do sistema, e essa característica as torna mais seguras e é o motivo de sua adoção generalizada e mundial. Portanto, você pode não encontrar nenhum comando YAML que possamos executar diretamente para criar qualquer saída.
Benefícios de usar um arquivo YAML
YAML tem muitos benefícios. A tabela fornecida a seguir mostra uma comparação entre YAML e JSON. JSON significa JavaScript Object Notation, e nós o usamos como um formato de intercâmbio de dados.
Atributo | YAML | JSON |
---|---|---|
Verbosidade | Menos prolixo | Mais prolixo |
Tipos de dados | Suporta tipos de dados complexos. | Não suporta tipos de dados complexos. |
Comentários | Suporta escrever comentários usando '#'. | Não suporta a escrita de comentários. |
Legibilidade | Mais legível por humanos. | Menos legível por humanos. |
Autorreferências | Oferece suporte a elementos de referência dentro dos mesmos documentos usando '&,' e *. | Não suporta autorreferência. |
Documentos múltiplos | Suporta vários documentos em um único arquivo. | Suporta um único documento em um único arquivo. |
Devido aos benefícios do YAML sobre os outros formatos de arquivo, como JSON, o YAML é mais prevalente entre os desenvolvedores por sua versatilidade e flexibilidade.
Pré-requisitos
Primeiro instalamos o Python e, em seguida, configuramos o Python e seus pacotes com IntelliJ IDEA. Portanto, instale o IntelliJ IDEA se ainda não estiver instalado antes de continuar.
Instale Python
Siga estas etapas para instalar e configurar o Python no Windows 10.
Passo 1
Baixe Python e instale-o selecionando a configuração conforme mostrado na imagem abaixo.

Passo 2
Inicie a configuração e selecione personalizar a instalação. Selecione a caixa de seleção de Adicionando Python ao PATH .

Etapa 3
Personalize a localização do Python conforme exibido na imagem.

Passo 4
Continue com a instalação. No final do assistente de instalação Desative o limite de caminho no Windows clicando na opção do assistente.

Agora, a configuração do Python está concluída.
Configurar Python com IntelliJ IDEA
Agora vamos configurar o IntelliJ IDEA com Python. O primeiro passo é instalar os Plugins para poder trabalhar em projetos Python.
Instalar plug-ins Python
Instale o Python Community Edition

Instale Python Security

Siga as etapas abaixo para completar a configuração.
Passo 1
Use o menu Arquivo e vá para as configurações da plataforma. Clique no Botão Adicionar SDK .

Passo 2
Selecione os Opção de ambiente virtual e selecione o interpretador básico do Python como aquele que foi instalado na etapa anterior.

Etapa 3
Agora selecione o ambiente virtual criado na etapa anterior sob o Configurações do SDK do projeto .

Recomendamos um ambiente virtual para um projeto.
Etapa 4 (Opcional)
Abra o arquivo config.py no explorador de projetos e clique em requisitos de instalação , conforme mostrado na imagem abaixo.

Ignore o requisito do ipython se necessário, desmarcando uma opção na caixa de diálogo Escolher pacote.

Agora, você pode seguir para a próxima seção para aprender o básico do YAML.
Noções básicas de YAML
Nesta seção, mencionamos os fundamentos do YAML com a ajuda de um arquivo de exemplo chamado config.yml e config.py. Acreditamos firmemente que explicar os conceitos de YAML em paralelo com seu uso em uma linguagem de programação torna o aprendizado melhor.
Portanto, ao explicar os fundamentos em YAML, também envolvemos o uso de Python para ler e gravar os dados armazenados em YAML.
Agora vamos criar ou abrir o config.yml em nossos respectivos editores e entender o YAML.
--- quiz: description: > 'This Quiz is to learn YAML.' questions: - ('How many planets are there in the solar system?', 'Name the non-planet') - 'Who is found more on the web?' - 'What is the value of pi?' - 'Is pluto related to platonic relationships?' - 'How many maximum members can play TT?' - 'Which value is no value?' - 'Don't you know that the Universe is ever-expanding?' answers: - (8, 'pluto') - cats - 3.141592653589793 - true - 4 - null - no # explicit data conversion and reusing data blocks extra: refer: &id011 # give a reference to data x: !!float 5 # explicit conversion to data type float y: 8 num1: !!int '123' # conversion to integer str1: !!str 120 # conversion to string again: *id011 # call data by giving the reference
Observe que os arquivos YAML têm.lyextensão. O idioma diferencia maiúsculas de minúsculas. Usamos espaços e não tabulações para indentação.
Junto com esses princípios básicos, vamos entender os tipos de dados. No YAML mencionado, representamos as informações em um questionário. Um questionário é descrito como um nó de nível raiz, com atributos como uma descrição, perguntas e respostas.
Tipos de dados YAML
YAML pode armazenar escalares, sequências e mapeamentos. Mostramos como escrever todos os tipos de dados necessários no arquivo config.yml.
Escalares são strings, inteiros, flutuantes e booleanos. Os dados do tipo Strings são colocados entre aspas duplas “. No entanto, YAML não impõe a escrita de strings entre aspas duplas, e podemos usar> ou | para escrever strings longas em várias linhas.
Observe os vários tipos de dados e valores mapeados na tabela abaixo.
Tipo de dados | Exemplos de tipos de dados em Config.yml |
---|---|
Fragmento As strings podem ser armazenadas com ou sem aspas. | questionário: descrição:> Este teste é para aprender YAML questões: - 'Quem é mais encontrado na web?' respostas: - gatos |
Inteiro e flutuante Inteiros e float são mencionados em sua forma original | questionário: questões: - 'Qual é o valor de pi?' - 'Quantos membros no máximo podem jogar TT?' respostas: - 3,141592653589793 - 4 |
boleano Booleanos são armazenados usando string verdadeiro / falso ou sim / não | questionário: questões: - 'Plutão está relacionado a relacionamentos platônicos?' - 'Você não sabe que o Universo está sempre se expandindo?' respostas: - verdade - não |
Sequências As sequências são criadas com a ajuda de colchetes (. | questionário: respostas: - (8, 'plutão') |
Referências A auto-referência é usada com a ajuda de & e * | # conversão explícita de dados e reutilização de blocos de dados extra: refer: & id011 # fornece uma referência aos dados # Outros valores novamente: * id011 # dados da chamada fornecendo a referência |
Listados abaixo estão alguns dos elementos adicionais dignos de nota de um arquivo YAML.
Documento
Agora observe os três travessões -. Isso significa o início de um documento. Armazenamos o primeiro documento com um questionário como elemento raiz e a descrição, perguntas e respostas como elementos filho com seus valores associados.
Tipos de dados explícitos
Observe a chave de seção chamada extra no config.yml. Vemos que, com a ajuda de exclamações duplas, podemos mencionar explicitamente os tipos de dados dos valores armazenados no arquivo. Convertemos um inteiro em um float usando !! float. Usamos !! str para converter um inteiro em string e !! int para converter string em um inteiro.
O pacote YAML do Python nos ajuda a ler o arquivo YAML e armazená-lo internamente como um dicionário. Python armazena chaves de dicionário como strings e converte automaticamente os valores em tipos de dados Python, a menos que seja explicitamente declarado usando “!!”.
Leia o arquivo YAML em Python
Em geral, usamos o Editor YAML e um Validador YAML no momento de escrever YAML. O validador YAML verifica o arquivo no momento da gravação.
O pacote Python YAML tem um analisador YAML integrado, que analisa o arquivo antes de armazená-lo na memória.
Agora vamos criar e abrir config.py em nossos respectivos editores com o conteúdo abaixo.
import yaml import pprint def read_yaml(): ''' A function to read YAML file''' with open('config.yml') as f: config = yaml.safe_load(f) return config if __name__ == '__main__': # read the config yaml my_config = read_yaml() # pretty print my_config pprint.pprint(my_config)
Para testar se você concluiu as etapas descritas acima, execute config.py.
Abra o arquivo config.py no IntelliJ IDEA, localize o bloco principal e execute o arquivo usando o ícone de reprodução.

Depois de executar o arquivo, vemos o console com a saída.

Na função read_yaml, abrimos o arquivo config.yml e usamos o método safe_load do pacote YAML para ler o fluxo como um dicionário Python e, em seguida, retornamos esse dicionário usando a palavra-chave return.
A variável my_config armazena o conteúdo do arquivo config.yml como um dicionário. Usando o pacote pretty print do Python, chamado pprint, imprimimos o dicionário no console.
Observe a saída acima. Todas as tags YAML correspondem aos tipos de dados do Python para que o programa possa usar ainda mais esses valores. Esse processo de construção de objetos Python a partir da entrada de texto é chamado de desserialização.
Escreva o arquivo YAML em Python
Abra config.py e adicione as seguintes linhas de código logo abaixo do método read_yaml e acima do bloco principal do arquivo.
def write_yaml(data): ''' A function to write YAML file''' with open('toyaml.yml', 'w') as f: yaml.dump(data, f)
No método write_yaml, abrimos um arquivo chamado toyaml.yml no modo de gravação e usamos o método de despejo dos pacotes YAML para gravar o documento YAML no arquivo.
Agora adicione as linhas de código abaixo no final do arquivo config.py
# write A python object to a file write_yaml(my_config)
Salve o config.py e execute o arquivo usando o comando abaixo ou usando o ícone de reprodução no IDE.
python config.py
Vemos que o comando acima imprime o conteúdo de config.yml no console ou na saída do sistema. O programa Python grava o mesmo conteúdo em outro arquivo chamado toyaml.yml. O processo de escrever o objeto Python em um arquivo externo é chamado de serialização.
Vários documentos em YAML
YAML é bastante versátil e podemos armazenar vários documentos em um único arquivo YAML.
Crie uma cópia do arquivo config.yml como configs.yml e cole as linhas abaixo no final do arquivo.
--- quiz: description: | This is another quiz, which is the advanced version of the previous one questions: q1: desc: 'Which value is no value?' ans: Null q2: desc: 'What is the value of Pi?' ans: 3.1415
Três travessões - no trecho acima marcam o início de um novo documento no mesmo arquivo. Uso de | após a tag de descrição nos permite escrever um texto de várias linhas do tipo string. Aqui no novo documento, armazenamos perguntas e respostas como mapeamentos separados aninhados em perguntas.
Agora crie um novo arquivo chamado configs.py e cole o código mencionado abaixo no arquivo.
import yaml import pprint def read_yaml(): ''' A function to read YAML file''' with open('configs.yml') as f: config = list(yaml.safe_load_all(f)) return config def write_yaml(data): ''' A function to write YAML file''' with open('toyaml.yml', 'a') as f: yaml.dump_all(data, f, default_flow_style=False) if __name__ == '__main__': # read the config yaml my_config = read_yaml() # pretty print my_config pprint.pprint(my_config) # write A python object to a file write_yaml(my_config)
Observe as mudanças nas funções read_yaml e write_yaml. Em read_yaml, usamos o método safe_load_all do pacote YAML para ler todos os documentos presentes em configs.yml como uma lista. Da mesma forma, em write_yaml, usamos o método dump_all para gravar a lista de todos os documentos lidos anteriormente em um novo arquivo chamado toyaml.yml.
Agora execute configs.py.
python configs.py
A saída do comando acima é exibida abaixo.
({'quiz': {'answers': ((8, 'pluto'), 'cats', 3.141592653589793, True, 4, None, False), 'description': 'This Quiz is to learn YAML', 'questions': (('How many planets are there in the solar system?', 'Name the non planet'), 'Who is found more on the web?', 'What is the value of pi?', 'Is pluto related to platonic relationships?', 'How many maximum members can play TT?', 'Which value is no value?', 'Don't you know that Universe is ever-expanding?')}}, {'quiz': {'description': 'This is another quiz, which
' 'is the advanced version of the previous one
', 'questions': {'q1': {'ans': None, 'desc': 'Which value is no value?'}, 'q2': {'ans': 3.1415, 'desc': 'What is the value of Pi?'}}}})
A saída é semelhante à saída de documento único mencionada anteriormente. Python converte cada documento no configs.yml em um dicionário Python. Facilita o processamento posterior e o uso dos valores.
perguntas frequentes
Você pode se deparar com as perguntas abaixo ao trabalhar com YAML.
P # 1) É possível preservar a Ordem dos Mapeamentos YAML?
Responda: Sim, é possível personalizar o comportamento padrão dos carregadores no pacote pyYAML do Python. Envolve o uso de OrderedDicts e a substituição do resolvedor de base por métodos personalizados, conforme mostrado aqui .
P # 2) Como armazenar uma imagem em YAML?
Responda: Você pode codificar uma imagem em base64 e mantê-la em YAML, conforme mostrado abaixo.
image: !!binary | iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg==
Q # 3) Qual é a diferença entre> e | tags em YAML?
Responda: > E | permite escrever valores em várias linhas em YAML. Usamos o símbolo maior que> para escrever strings de várias linhas e | para representar valores literais. Valores escritos usando | não precisa ser escapado. Por exemplo, podemos armazenar Html usando |.
template: | This is a test paragraph
This is another paragraph
P # 4) Qual é o significado de ... no final do arquivo YAML.
Responda: Três pontos… são identificadores opcionais. Eles podem ser usados para marcar o final do documento em um fluxo.
P # 5) Como escrever comentários no arquivo YAML?
Responda: Usamos # para escrever um comentário de uma única linha. YAML não suporta comentários multilinhas. Portanto, precisamos usar # em várias linhas, conforme mostrado abaixo.
# this is # a single line as well as multi-line # comment
Conclusão
Neste guia, cobrimos as etapas de preparação do ambiente de desenvolvimento no Windows e no Linux para começar a usar YAML. Quase discutimos todos os conceitos de tipos de dados básicos de YAML, editor de YAML e analisador de YAML.
Também destacamos os benefícios de usar YAML vis-à-vis outras linguagens de marcação e fornecemos exemplos de código com a ajuda de um projeto de amostra de suporte. Esperamos que agora os alunos possam usar YAML para abstrair dados da lógica do aplicativo para escrever código eficiente e sustentável.
Aprendizagem feliz !!
Leitura recomendada
- Tutorial de Python para iniciantes (treinamento prático e gratuito em Python)
- Introdução ao Python e processo de instalação
- Python Django Tutorial - Primeiros passos com Django
- Tutorial Python DateTime com exemplos
- Tutorial de manipulação de arquivos Python: como criar, abrir, ler e escrever
- Tutorial TestComplete: Guia de uma ferramenta de teste de GUI abrangente para iniciantes
- Instruções de controle Python (Python Continue, Break and Pass)
- Conceitos de Python OOPs (classes, objetos e herança de Python)