yaml tutorial comprehensive guide yaml using python
Questo tutorial YAML spiega cos'è YAML, concetti di base di YAML come tipi di dati, validatore YAML, parser, editor, file, ecc. Con l'aiuto di esempi di codice usando Python:
L'elaborazione del testo nell'informatica aiuta i programmatori a creare programmi e applicazioni configurabili. I linguaggi di markup svolgono un ruolo fondamentale nell'archiviazione e nello scambio di dati in un formato leggibile dall'uomo.
Inoltre, i programmatori utilizzano linguaggi di markup come formati di scambio dati comuni e standard tra sistemi diversi. Alcuni esempi dei linguaggi di markup includono HTML, XML, XHTML e JSON.
Abbiamo condiviso informazioni su un altro linguaggio di markup in questo tutorial YAML facile da seguire.
Questo tutorial aiuta i lettori a trovare le risposte alle domande sotto menzionate. Gli studenti possono fare i primi passi e comprendere il mistero dei linguaggi di markup in generale e di YAML in particolare.
Le domande includono:
- Perché abbiamo bisogno di linguaggi di markup?
- Cosa significa YAML?
- Perché è stato creato YAML?
- Perché abbiamo bisogno di imparare YAML?
- Perché è importante oggi imparare YAML?
- Che tipo di dati posso memorizzare in uno YAML?
Questa guida è utile per lettori esperti anche quando discutiamo concetti nel contesto della programmazione in generale e anche nel contesto del test del software. Tratteremo anche argomenti come serializzazione e deserializzazione qui.
Cosa imparerai:
Cos'è YAML
I creatori di YAML lo chiamarono inizialmente 'Yet Another Markup language'. Tuttavia, con il tempo l'acronimo è cambiato in 'YAML Ain't a MarkUp language'. YAML è un acronimo che si riferisce a se stesso ed è chiamato acronimo ricorsivo.
Possiamo utilizzare questo linguaggio per memorizzare dati e configurazione in un formato leggibile dall'uomo. YAML è una lingua elementare da imparare. Anche i suoi costrutti sono facili da capire.
Clark, Ingy e Oren hanno creato YAML per affrontare le complessità della comprensione di altri linguaggi di markup, che sono difficili da capire, e la curva di apprendimento è anche più ripida dell'apprendimento di YAML.
Per rendere l'apprendimento più confortevole, come sempre, utilizziamo un progetto di esempio. Ospitiamo questo progetto su Github con licenza MIT per consentire a chiunque di apportare modifiche e inviare una richiesta pull se necessario.
Puoi clonare il progetto usando il comando sottostante.
git clone git@github.com:h3xh4wk/yamlguide.git
Tuttavia, se necessario, puoi scarica lo zip file per il codice e gli esempi.
In alternativa, i lettori possono clonare questo progetto con l'aiuto di IntelliJ IDEA. Completare la sezione sui prerequisiti per installare Python e configurarlo con IntelliJ IDEA prima di clonare il progetto.

Perché abbiamo bisogno di linguaggi di markup
È impossibile scrivere tutto nel codice del software. È perché di tanto in tanto abbiamo bisogno di mantenere il codice e abbiamo bisogno di astrarre le specifiche su file o database esterni.
È una buona pratica ridurre il codice al minimo possibile e crearlo in modo tale da non richiedere modifiche per i vari input di dati necessari.
Per esempio, possiamo scrivere una funzione per prendere i dati di input da un file esterno e stamparne il contenuto riga per riga invece di scrivere il codice e i dati insieme in un unico file.
È considerata una best practice perché separa le preoccupazioni relative alla creazione dei dati e alla creazione del codice. L'approccio di programmazione dell'estrazione dei dati dal codice garantisce una facile manutenzione.
I linguaggi di markup ci consentono di archiviare più facilmente le informazioni gerarchiche in un formato più accessibile e leggero. Questi file possono essere scambiati tra programmi su Internet senza consumare molta larghezza di banda e supportano i protocolli più comuni.
Queste lingue seguono uno standard universale e supportano varie codifiche per supportare i caratteri di quasi tutte le lingue parlate nel mondo.
come usare xor in java
La cosa migliore dei linguaggi di markup è che il loro uso generale non è associato ad alcun comando di sistema, e questa caratteristica li rende più sicuri ed è la ragione della loro adozione diffusa e mondiale. Pertanto, potresti non trovare alcun comando YAML che possiamo eseguire direttamente per creare qualsiasi output.
Vantaggi dell'utilizzo di un file YAML
YAML ha molti vantaggi. La tabella riportata di seguito mostra un confronto tra YAML e JSON. JSON sta per JavaScript Object Notation e lo usiamo come formato di scambio di dati.
Attributo | YAML | JSON |
---|---|---|
Verbosità | Meno prolisso | Più prolisso |
Tipi di dati | Supporta tipi di dati complessi. | Non supporta tipi di dati complessi. |
Commenti | Supporta la scrittura di commenti utilizzando '#'. | Non supporta la scrittura di commenti. |
Leggibilità | Più leggibile dall'uomo. | Meno leggibile dall'uomo. |
Auto-riferimenti | Supporta i riferimenti agli elementi all'interno degli stessi documenti utilizzando '&' e *. | Non supporta l'autoreferenziazione. |
Documenti multipli | Supporta più documenti in un unico file. | Supporta un singolo documento in un unico file. |
A causa dei vantaggi di YAML rispetto ad altri formati di file come JSON, YAML è più diffuso tra gli sviluppatori per la sua versatilità e flessibilità.
Prerequisiti
Per prima cosa installiamo Python e poi configuriamo Python e i suoi pacchetti con IntelliJ IDEA. Pertanto, installare IntelliJ IDEA se non è già installato prima di procedere.
Installa Python
Segui questi passaggi per installare e configurare Python su Windows 10.
Passo 1
Scarica Python e installalo selezionando l'impostazione come mostrato nell'immagine sottostante.

Passo 2
Avvia la configurazione e seleziona Personalizza l'installazione. Seleziona la casella di controllo di Aggiunta di Python a PATH .

Passaggio 3
Personalizza la posizione di Python come mostrato nell'immagine.

Passaggio 4
Procedi con l'installazione. Alla fine della procedura guidata di installazione Disabilitare il limite di percorso su Windows facendo clic sull'opzione nella procedura guidata.

Ora, l'installazione di Python è completa.
Configurare Python con IntelliJ IDEA
Adesso configuriamo IntelliJ IDEA con Python. Il primo passo è installare i plugin per poter lavorare su progetti Python.
Installa i plugin Python
Installa Python Community Edition

Installa Python Security

Seguire i passaggi seguenti per completare la configurazione.
Passo 1
Usa il menu File e vai alle impostazioni della piattaforma. Clicca sul Aggiungi il pulsante SDK .

Passo 2
Seleziona il Opzione ambiente virtuale e seleziona l'interprete di base di Python come quello che è stato installato nel passaggio precedente.

Passaggio 3
Ora seleziona l'ambiente virtuale creato nel passaggio precedente sotto il file Impostazioni SDK del progetto .

Consigliamo un ambiente virtuale per un progetto.
Passaggio 4 (Facoltativo)
Apri il file config.py dall'explorer del progetto e fai clic su requisiti di installazione , come mostrato nell'immagine sottostante.

Ignora il requisito ipython se richiesto deselezionando un'opzione nella finestra di dialogo Scegli pacchetto.

Ora puoi andare alla sezione successiva per apprendere le basi di YAML.
Nozioni di base di YAML
In questa sezione, menzioniamo le basi di YAML con l'aiuto di un file di esempio chiamato config.yml e config.py. Crediamo fermamente che spiegare i concetti di YAML parallelamente al suo utilizzo in un linguaggio di programmazione renda l'apprendimento migliore.
Pertanto, mentre spieghiamo le basi in YAML, coinvolgiamo anche l'uso di Python per leggere e scrivere i dati memorizzati in YAML.
Ora creiamo o apriamo il file config.yml nei nostri rispettivi editor e comprendiamo lo 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
Notare che i file YAML hanno.lyestensione. La lingua fa distinzione tra maiuscole e minuscole. Usiamo spazi e non tabulazioni per il rientro.
Insieme a queste nozioni di base, comprendiamo i tipi di dati. Nello YAML citato, abbiamo rappresentato le informazioni su un quiz. Un quiz viene rappresentato come un nodo a livello di radice, con attributi quali descrizione, domande e risposte.
Tipi di dati YAML
YAML può memorizzare scalari, sequenze e mappature. Abbiamo mostrato come scrivere tutti i tipi di dati necessari nel file config.yml.
Gli scalari sono stringhe, numeri interi, float e booleani. I dati di tipo String sono racchiusi tra virgolette doppie “. Tuttavia, YAML non impone la scrittura di stringhe tra virgolette doppie e possiamo usare> o | per scrivere stringhe lunghe su più righe.
Guarda i vari tipi di dati e valori mappati nella tabella sottostante.
Tipo di dati | Esempi di tipi di dati in Config.yml |
---|---|
Corda Le stringhe possono essere memorizzate con o senza virgolette. | quiz: descrizione:> Questo quiz serve per imparare YAML domande: - 'Chi si trova di più sul web?' risposte: - gatti |
Intero e float I numeri interi e il float sono menzionati nella loro forma originale | quiz: domande: - 'Qual è il valore di pi?' - 'Quanti membri massimi possono giocare a TT?' risposte: - 3.141592653589793 - 4 |
Booleano I valori booleani vengono memorizzati utilizzando la stringa true / false o yes / no | quiz: domande: - 'Plutone è collegato alle relazioni platoniche?' - 'Non sai che l'Universo è in continua espansione?' risposte: - vero - non |
Sequenze Le sequenze vengono create con l'aiuto delle parentesi quadre (. | quiz: risposte: - (8, 'plutone') |
Riferimenti L'autoreferenziazione viene utilizzata con l'aiuto di & e * | # conversione esplicita dei dati e riutilizzo dei blocchi di dati extra: refer: & id011 # fornisce un riferimento ai dati # Altri valori di nuovo: * id011 # chiama i dati fornendo il riferimento |
Di seguito sono elencati alcuni degli elementi aggiuntivi degni di nota di un file YAML.
Documento
Ora nota i tre trattini -. Significa l'inizio di un documento. Memorizziamo il primo documento con un quiz come elemento radice e descrizione, domande e risposte come elementi figlio con i valori associati.
Tipi di dati espliciti
Osserva la sezione chiave chiamata extra nel config.yml. Vediamo che con l'aiuto di doppie esclamazioni, possiamo menzionare esplicitamente i tipi di dati dei valori memorizzati nel file. Convertiamo un intero in un float usando !! float. Usiamo !! str per convertire un numero intero in stringa e usiamo !! int per convertire una stringa in un numero intero.
Il pacchetto YAML di Python ci aiuta a leggere il file YAML e ad archiviarlo internamente come dizionario. Python memorizza le chiavi del dizionario come stringhe e converte automaticamente i valori in tipi di dati Python a meno che non sia dichiarato esplicitamente utilizzando '!!'.
Leggi il file YAML in Python
In generale, utilizziamo l'Editor YAML e un Validatore YAML al momento della scrittura di YAML. Il validatore YAML controlla il file al momento della scrittura.
Il pacchetto Python YAML ha un Parser YAML integrato, che analizza il file prima di salvarlo in memoria.
Ora creiamo e apriamo config.py nei nostri rispettivi editor con il contenuto di seguito.
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)
Per verificare di aver completato i passaggi descritti sopra, eseguire config.py.
Aprire il file config.py in IntelliJ IDEA, individuare il blocco principale ed eseguire il file utilizzando l'icona di riproduzione.

Una volta eseguito il file, vediamo la console con l'output.

Nella funzione read_yaml, apriamo il file config.yml e usiamo il metodo safe_load del pacchetto YAML per leggere lo stream come dizionario Python e poi restituiamo questo dizionario usando la parola chiave return.
La variabile my_config memorizza il contenuto del file config.yml come dizionario. Usando il grazioso pacchetto print di Python chiamato pprint, stampiamo il dizionario sulla console.
Notare l'output sopra. Tutti i tag YAML corrispondono ai tipi di dati di Python in modo che il programma possa utilizzare ulteriormente quei valori. Questo processo di costruzione di oggetti Python dall'input di testo è chiamato Deserializzazione.
Scrivi file YAML in Python
Apri config.py e aggiungi le seguenti righe di codice appena sotto il metodo read_yaml e sopra il blocco principale del file.
def write_yaml(data): ''' A function to write YAML file''' with open('toyaml.yml', 'w') as f: yaml.dump(data, f)
Nel metodo write_yaml, apriamo un file chiamato toyaml.yml in modalità di scrittura e usiamo il metodo dump dei pacchetti YAML per scrivere il documento YAML nel file.
Ora aggiungi le seguenti righe di codice alla fine del file config.py
# write A python object to a file write_yaml(my_config)
Salvare il file config.py ed eseguire il file utilizzando il comando seguente o utilizzando l'icona di riproduzione nell'IDE.
python config.py
Vediamo che il comando precedente stampa il contenuto di config.yml sull'output della console o del sistema. Il programma Python scrive lo stesso contenuto su un altro file chiamato toyaml.yml. Il processo di scrittura dell'oggetto Python su un file esterno è chiamato Serializzazione.
Documenti multipli in YAML
YAML è abbastanza versatile e possiamo memorizzare più documenti in un unico file YAML.
Crea una copia del file config.yml come configs.yml e incolla le righe sottostanti alla fine del file.
--- 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
Tre trattini: nello snippet precedente, segna l'inizio di un nuovo documento nello stesso file. Uso di | dopo il tag di descrizione ci permette di scrivere un testo su più righe di tipo stringa. Qui nel nuovo documento, abbiamo memorizzato le domande e le risposte come mappature separate annidate sotto le domande.
Ora crea un nuovo file chiamato configs.py e incolla il codice sotto indicato nel file.
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)
Notare i cambiamenti nelle funzioni read_yaml e write_yaml. In read_yaml, usiamo il metodo safe_load_all del pacchetto YAML per leggere tutti i documenti presenti in configs.yml come una lista. Allo stesso modo, in write_yaml, usiamo il metodo dump_all per scrivere l'elenco di tutti i documenti letti in precedenza in un nuovo file chiamato toyaml.yml.
Ora esegui configs.py.
python configs.py
L'output del comando precedente viene visualizzato di seguito.
({'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?'}}}})
L'output è simile all'output del documento singolo menzionato in precedenza. Python converte ogni documento nel configs.yml in un dizionario Python. Rende più facile l'ulteriore elaborazione e utilizzo dei valori.
Domande frequenti
Potresti incontrare le seguenti domande mentre lavori con YAML.
Q # 1) È possibile preservare l'ordine delle mappature YAML?
Risposta: Sì, è possibile personalizzare il comportamento predefinito dei caricatori nel pacchetto pyYAML di Python. Implica l'uso di OrderedDicts e l'override del resolver di Base con metodi personalizzati, come mostrato Qui .
D # 2) Come memorizzare un'immagine in YAML?
Risposta: Puoi codificare in base64 un'immagine e mantenerla in YAML, come mostrato di seguito.
image: !!binary | iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg==
D # 3) Qual è la differenza tra> e | tag in YAML?
Risposta: Sia> che | consentire la scrittura di valori su più righe in YAML. Usiamo maggiore del simbolo> per scrivere stringhe su più righe e | per rappresentare valori letterali. Valori scritti utilizzando | non è necessario sfuggire. Per esempio, possiamo memorizzare Html usando |.
template: | This is a test paragraph
This is another paragraph
Q # 4) Qual è il significato di ... alla fine del file YAML.
Risposta: Tre punti ... sono identificatori opzionali. Questi possono essere utilizzati per contrassegnare la fine del documento in un flusso.
Q # 5) Come scrivere commenti nel file YAML?
Risposta: Usiamo # per scrivere una singola riga di commento. YAML non supporta i commenti su più righe. Quindi, dobbiamo usare # su più righe, come mostrato di seguito.
# this is # a single line as well as multi-line # comment
Conclusione
In questa guida, abbiamo coperto i passaggi della preparazione dell'ambiente di sviluppo sia in Windows che in Linux per iniziare con YAML. Abbiamo quasi discusso tutti i concetti dei tipi di dati di base di YAML, dell'editor YAML e del parser YAML.
Abbiamo anche evidenziato i vantaggi dell'utilizzo di YAML rispetto ad altri linguaggi di markup e fornito esempi di codice con l'aiuto di un progetto di esempio di supporto. Ci auguriamo che ora gli studenti possano utilizzare YAML per astrarre i dati dalla logica dell'applicazione per scrivere codice efficiente e gestibile.
Buon apprendimento !!
Lettura consigliata
- Tutorial Python per principianti (formazione pratica GRATUITA su Python)
- Introduzione a Python e processo di installazione
- Python Django Tutorial - Introduzione a Django
- Tutorial Python DateTime con esempi
- Tutorial sulla gestione dei file Python: come creare, aprire, leggere, scrivere
- TestComplete Tutorial: una guida completa per lo strumento di test della GUI per principianti
- Dichiarazioni di controllo Python (Python Continue, Break and Pass)
- Concetti di Python OOP (classi, oggetti ed ereditarietà Python)