Una delle qualità di Python è che accompagna le batterie incluse: ha una ricca e adattabile libreria standard che lo rende eccezionale tra gli altri dialetti di programmazione per comporre contenuti per la linea diretta. In ogni caso, nel caso in cui si componga il contenuto per la linea d’ordine, a quel punto bisogna anche dare un’interfaccia decente per la linea di direzione, che si può fare con la libreria di Python argparse.

Cos’è un’interfaccia di linea di direzione?

L’interfaccia della linea d’ordine (altrimenti chiamata CLI) è un modo per collaborare con un contenuto a linea diretta. Python accompagna alcune librerie distinte che permettono di comporre un’interfaccia a riga d’ordine per i contenuti, tuttavia, il percorso standard per realizzare una CLI in Python è al momento la libreria Python argparse.

La libreria Python argparse è stata scaricata come aspetto principale della libreria standard con Python 3.2 il 20 febbraio 2011. È stata presentata con Python Upgrade Proposition 389 ed è attualmente il metodo standard per realizzare una CLI in Python, sia in forma 2.7 che 3.2+.

Questo nuovo modulo è stato scaricato come commercio per i moduli getopt e optparse più consolidati, poiché erano inadeguati rispetto ad alcuni punti salienti significativi.

La biblioteca Python argparse:

$ ls

dcdb_20180201.sg4 mastro35.sg4         aperture.sg4

dcdb_20180201.si4 mastro35.si4         aperture.si4

dcdb_20180201.sn4 mastro35.sn4         aperture.sn4

Permette l’utilizzo di contese posizionali

Permette la personalizzazione delle bruciature del prefisso

Supporta quantità variabili di parametri per una scelta solitaria

Supporta i sottocomandi (Un parser di linea di ordine fondamentale può utilizzare altri parser di linea di direzione basandosi su determinate contese).

Prima di iniziare, bisogna rendersi conto di come funziona un’interfaccia di linea d’ordine, quindi aprire un terminale sul PC ed eseguire l’ordine ls per ottenere in questo modo il rundown dei record contenuti nel presente indice:

Come dovrebbe essere ovvio, ci sono molti documenti nel presente catalogo, tuttavia, la direzione non ha ripristinato una grande quantità di dati su questi record.

Fortunatamente, non è necessario cercare un altro programma per avere un’analisi più stravagante dei documenti contenuti nel catalogo dei flussi. Allo stesso modo non è necessario modificare l’ordine di ls, poiché riceve un’interfaccia a linea di direzione, cioè solo un sacco di token (chiamati contestazioni) che si possono usare per progettare la condotta di questa direzione.

Attualmente si tenta ancora una volta di eseguire l’ordine ls, ma con l’aggiunta della scelta – l alla linea di direzione come nel modello sottostante:

$ ls -l

totale 641824

-rw——- 1 dave staff 204558286 5 mar 2018 dcdb_20180201.sg4

-rw——- 1 dave staff 110588409 5 mar 2018 dcdb_20180201.si4

-rw——- 1 dave staff 2937516 5 mar 2018 dcdb_20180201.sn4

-rw——- 1 dave staff 550127 27 mar 2018 mastro35.sg4

-rw——- 1 dave staff 15974 11 Gen 17:01 mastro35.si4

-rw——- 1 dave staff 3636 27 mar 2018 mastro35.sn4

-rw——- 1 dave staff 29128 17 Apr 2018 aperture.sg4

-rw——- 1 dave staff 276 17 Apr 2018 aperture.si4

-rw——- 1 dave staff 86 18 Apr 2018 aperture.sn4

Il rendimento è del tutto diverso a questo punto. L’ordine è stato ripristinato una tonnellata di dati sui consensi, il proprietario, la raccolta e la dimensione di ogni documento e l’occupazione del registro a tutti gli effetti sulla targa.

Questo per il fatto che avete utilizzato l’interfaccia della linea d’ordine della direzione ls e avete determinato la – l scelta che consente la lunga disposizione, una configurazione straordinaria che permette di ottenere un numero significativamente maggiore di dati per ogni singolo documento registrato.

Per familiarizzarsi con questo tema, si va a sfogliare una tonnellata di contestazioni, alternative e parametri, quindi dovremmo spiegare immediatamente il fraseggio:

La contesa è una parte solitaria di una linea diretta, delimitata da spazi.

Un’alternativa è un tipo specifico di contestazione (o parte di una contestazione) che può cambiare lo svolgimento della linea d’ordine.

Un parametro è un tipo specifico di contesa che dà dati extra ad una scelta o ad un ordine solitario.

Pensate alla direzione di accompagnamento:

$ ls – l – s – k/var/log

In questo modello, si hanno cinque contese uniche:

ls: il nome della direzione che si sta eseguendo

– l: una scelta per potenziare la notevole posizione di degrado

– s: la scelta di stampare la dimensione assegnata di ogni disco

– k: la scelta di avere la dimensione in kilobyte

/var/log: un parametro che fornisce dati extra (il modo di inclinare) alla direzione

Si noti che, nella remota possibilità di avere diverse alternative in una linea d’ordine solitaria, a quel punto è possibile unirle in una contesa solitaria come questa:

$ ls – lsk/var/log

Qui ci sono solo tre contese:

ls : il nome dell’ordine che state eseguendo

– lsk: le tre scelte distinte di cui avete bisogno per potenziare (un mix di – l, – s, e – k)

/var/log: un parametro che fornisce dati extra (il modo di inclinare) all’ordine

Quando utilizzare un’interfaccia di linea di direzione

Dal momento che comprendete cosa sia un’interfaccia a linee di direzione, potreste riflettere quando è un pensiero intelligente eseguirne una nei vostri progetti. La linea guida generale è che, nel caso in cui si debba dare un modo facile da usare per affrontare la progettazione del programma, a quel punto si dovrebbe considerare un’interfaccia a linee di direzione, e il metodo standard per farlo è l’utilizzo della libreria Python argparse.

Indipendentemente dal fatto che si stia realizzando un intricato programma a riga d’ordine che necessita di un record di arrangiamento per funzionare, nel caso in cui si debba dare al cliente la possibilità di indicare quale documento di progetto utilizzare, è un pensiero intelligente riconoscere questo incentivo realizzando un’interfaccia a riga diretta con la libreria Python argparse.

Il metodo più efficace per utilizzare la libreria Python argparse per realizzare un’interfaccia di linea di direzione

L’utilizzo della libreria Python argparse ha quattro fasi:

Importare la libreria Python argparse

Fai il parser

Aggiungete al parser contese discrezionali e posizionali

Eseguire .parse_args()

Dopo aver eseguito .parse_args(), quello che si ottiene è un oggetto Namespace che contiene una semplice proprietà per ogni contesa di informazioni ottenuta dalla linea di direzione.

Per vedere queste quattro fasi in dettaglio con un modello, che ne dite di immaginare che stiate realizzando un programma chiamato myls.py che esegue il rundown dei record contenuti nel presente catalogo. Ecco un potenziale utilizzo dell’interfaccia della vostra linea d’ordine senza utilizzare la libreria Python argparse:

# myls.py

Importazione

importare sys

se len(sys.argv) > 2:

    print(‘Hai specificato troppi argomenti’)

    sys.exit()

se len(sys.argv) < 2:

    print(‘È necessario specificare il percorso da elencare’)

    sys.exit()

input_path = sys.argv[1]

se non os.path.isdir(input_path):

    print(‘Il percorso specificato non esiste’)

    sys.exit()

stampa(‘\n’.join(os.listdir(percorso_input)))

Questa è una possibile implementazione dell’interfaccia a riga di comando per il vostro programma che non usa la libreria Python argparse, ma se provate ad eseguirla, allora vedrete che funziona:

$ pitone myls.py

È necessario specificare il percorso da elencare

$ pitone myls.py /mnt /proc /dev

Hai specificato troppi argomenti

$ pitone myls.py /mnt

dir1

dir2

Come si può vedere, lo script funziona, ma l’output è molto diverso da quello che ci si aspetterebbe da un comando standard integrato.

Ora, vediamo come la libreria Python argparse può migliorare questo codice:

# myls.py

# Importa la libreria argparse

importazione argparse

Importazione

importare sys

# Crea il parser

my_parser = argparse.ArgumentParser(description=’Elenca il contenuto di una cartella’)

# Aggiungete gli argomenti

my_parser.add_argument(‘Percorso’,

                       metavar=”percorso”,

                       type=str,

                       help=”il percorso da elencare”)

# Eseguire il metodo parse_args()

args = my_parser.parse_args()

input_path = args.Path

se non os.path.isdir(input_path):

    print(‘Il percorso specificato non esiste’)

    sys.exit()

stampa(‘\n’.join(os.listdir(percorso_input)))

Il codice è cambiato molto con l’introduzione della libreria Python argparse.