Programmazione

Nozioni di base sull'analisi degli argomenti della riga di comando in Python

Nozioni di base sull'analisi degli argomenti della riga di comando in Python

Le applicazioni da riga di comando sono uno dei tipi di app più vecchi e più utilizzati. Se sei un utente Linux esperto, potresti aver usato a malapena gli strumenti della GUI invece degli strumenti della riga di comando per svolgere la stessa attività. Ad esempio, Anaconda, il gestore di pacchetti per Python, ha strumenti da riga di comando denominati Conda e uno strumento GUI denominato anaconda navigator.

La cosa che rende l'applicazione a riga di comando popolare tra gli sviluppatori è che consumano pochissime risorse rispetto alla sua controparte GUI e offrono prestazioni migliori.

Python è un linguaggio semplice e potente per creare applicazioni da riga di comando. Fornisce tonnellate di librerie già scritte da molti grandi programmatori, semplificando il nostro compito in quanto non è necessario riscrivere lo stesso codice.

In questo tutorial, ti presenterò la libreria Argparse di Python, che può analizzare gli argomenti delle applicazioni della riga di comando. Questo è utile per creare fantastiche interfacce a riga di comando. Per seguire questo tutorial, si consiglia di avere l'ultima versione di Python installata. Abbiamo anche un tutorial passo passo sull'aggiornamento di Python all'ultima versione in Linux.

introduzione

L'analisi degli argomenti è un concetto importante che dobbiamo utilizzare per creare interfacce della riga di comando potenti e intuitive. Se hai già utilizzato applicazioni a riga di comando, potresti aver notato che possiamo aggiungere argomenti alle applicazioni a riga di comando per configurare le opzioni dello strumento.

Ad esempio, se hai utilizzato il ls comando in Linux, che viene utilizzato per elencare gli elementi della directory di lavoro corrente, potresti aver visto un output simile, come mostrato nell'immagine qui sotto.

comando ls in Linux

Come puoi vedere nell'immagine, elenca gli elementi nella directory corrente. Possiamo anche usare il ls comando in modo più vantaggioso dandogli un argomento come ho fatto nel comando seguente.

ls -a

Ora digitando questo comando nel terminale, elencherà tutti gli elementi presenti nella directory di lavoro corrente, inclusi gli elementi nascosti. Come puoi vedere, fornendo argomenti sul comando, possiamo facilmente specificare le opzioni del comando in modo amichevole friendly. È qui che entrano in gioco gli argomenti. Rendono le applicazioni della riga di comando più utili e amichevoli.

Ti starai chiedendo quando e come aggiungere argomenti della riga di comando nelle tue applicazioni. Immagina di creare un'applicazione che richiede un input da parte dell'utente del nome del file che l'applicazione elaborerà.

Possiamo farlo in due modi:

Il primo trucco è buono, ma il secondo è più utile in quanto l'utente può dare tutte le opzioni in un comando, il che lo rende più user-friendly.

Python include una fantastica libreria chiamata "argparse", che è utile per creare e analizzare argomenti della riga di comando e può creare molto facilmente potenti interfacce della riga di comando per gli utenti. Facciamo un tuffo profondo nella libreria argparse di Python.

Libreria Argparse

Il argparse la libreria è un modo semplice e utile per analizzare gli argomenti durante la creazione di applicazioni da riga di comando in python. Sebbene ci siano altri argomenti per l'analisi delle librerie come optparse, getopt, eccetera., il argparse la libreria è ufficialmente il modo consigliato per analizzare gli argomenti della riga di comando.

È anche disponibile nella libreria standard di Python, quindi non abbiamo bisogno di alcuna configurazione manuale. Il argparse la libreria è stata creata utilizzando il optare libreria di Python, ma argparse è più utile e amichevole per gli sviluppatori del optare biblioteca.

Demo pratica di Argparse

Vediamo una demo pratica di come utilizzare la libreria argparse per creare una semplice interfaccia a riga di comando. Questo programma accetterà un percorso e controllerà se il percorso esiste o meno e se esiste, quindi stamperà se è un file o una directory.

import os import argparse parser = argparse.ArgumentParser('description = "Path Existence Checker") parser.add_argument("--path", help="inserisci un percorso per verificare se esiste") args = parser.parse_args() input_path = args.percorso se os.sentiero.isdir(input_path): print("Il percorso esiste ed è una directory") elif os.sentiero.isfile(input_path): print("Il percorso esiste ed è un file") else: print("Il percorso non esiste")
Eseguendo il programma sopra, possiamo verificare se il percorso esiste o meno.

demo di analisi degli argomenti con argparse

Puoi anche usare il -h argomento con il programma, che è l'argomento predefinito per la visualizzazione dei messaggi di aiuto.

messaggio di aiuto predefinito argparse

Lascia che ti spieghi come funziona il programma di cui sopra. Nelle prime due righe abbiamo importato i moduli che ci serviranno nel programma. Il os il modulo è stato importato per verificare se il percorso esiste o meno, ed è un file o una directory?. Se vuoi saperne di più sul os modulo, puoi fare riferimento alla nostra guida su come lavorare con os in python.Nella riga successiva, abbiamo importato la libreria argparse necessaria per creare e analizzare gli argomenti. Nella terza riga creiamo un oggetto parser usando la classe ArgumentParser della libreria argparse. Questa classe accetta anche una descrizione del parametro facoltativa, che verrà visualizzata nel messaggio di aiuto help.Nella riga successiva, abbiamo creato un argomento denominato percorso utilizzando il metodo add_argument() dell'oggetto parser e fornito il dettaglio nel parametro di aiuto che verrà visualizzato nel messaggio di aiuto come abbiamo visto nell'output precedente.Successivamente, analizziamo gli argomenti utilizzando il metodo parse_args() dell'oggetto parser e accediamo al percorso di input dell'utente come argomento. Abbiamo ottenuto il percorso che l'utente ha inserito nell'argomento e poi l'abbiamo usato con il modulo os per verificare se si tratta di un file o di una cartella. Se non è tra i due, stamperà che il percorso non esiste.

personalizzazione

Vediamo alcune delle personalizzazioni che possiamo fare alla nostra interfaccia a riga di comando con l'aiuto della libreria argparse.

Guida all'utilizzo personalizzato

Quando eseguiamo il programma demo che abbiamo creato in precedenza con il -h parametro, otteniamo l'aiuto del programma come output generato dalla libreria argparse. Se noti il ​​messaggio di aiuto, c'è un aiuto sull'utilizzo nella riga superiore che ci mostra come usarlo.Nel nostro programma demo, abbiamo la guida per l'utilizzo standard standard. Possiamo ancora facilmente personalizzarlo utilizzando il parametro di utilizzo durante la creazione dell'oggetto parser utilizzando la classe ArgumentParser(). Guarda il codice qui sotto, che sarà modificato nel nostro programma demo.
parser = argparse.ArgumentParser(description = "Path Existence Checker", using="cla.py percorso")
Ecco l'output:

aiuto per l'utilizzo personalizzato in argparse

Come possiamo vedere nell'output, la guida all'utilizzo è stata modificata in quella che specifichiamo nel parametro di utilizzo della classe ArgumentParser().

Personalizzazione degli argomenti

Possiamo anche usare la libreria Argparse per personalizzare gli argomenti come se gli argomenti saranno richiesti o meno, dando a un argomento un valore predefinito.

Aggiunta del valore predefinito

Possiamo dare agli argomenti un valore predefinito usando il parametro predefinito per il to add_argument() metodo. Ad esempio, vedere il codice sottostante.

import os import argparse parser = argparse.ArgumentParser(description = "Path Existence Checker", using="cla.py percorso") parser.add_argument("--path", help="inserisci un percorso per verificare se esiste", default="filename.txt") args = parser.parse_args() input_path = args.percorso if input_path == Nessuno: exit() elif os.sentiero.isdir(input_path): print("Il percorso esiste ed è una directory") elif os.sentiero.isfile(input_path): print("Il percorso esiste ed è un file") else: print("Il percorso non esiste")

Eseguendo il programma sopra senza alcun argomento, otterremo l'output seguente. Come mostrato nell'output, il programma controlla il percorso nome del file.TXT, che impostiamo nel parametro di default.

dando un valore predefinito agli argomenti

Impostazione dei requisiti degli argomenti

Possiamo anche usare la libreria Argparse per impostare i requisiti dell'argomento, i.e., se gli argomenti saranno necessari o no. Per fare ciò, dobbiamo utilizzare il parametro richiesto, come mostrato nel codice seguente.

import os import argparse parser = argparse.ArgumentParser(description = "Path Existence Checker", using="cla.py percorso") parser.add_argument("--path", help="inserisci un percorso per verificare se esiste", default="filename.txt", richiesto=Vero) args = parser.parse_args() input_path = args.percorso if input_path == Nessuno: exit() elif os.sentiero.isdir(input_path): print("Il percorso esiste ed è una directory") elif os.sentiero.isfile(input_path): print("Il percorso esiste ed è un file") else: print("Il percorso non esiste")

Eseguendo il codice sopra senza argomenti, riceverai un errore che dice che sono richiesti i seguenti argomenti.

stabilire i requisiti degli argomenti

Tipo di argomento

Possiamo anche impostare il tipo di dati utilizzato nell'argomento. Ad esempio, se abbiamo bisogno del percorso, dovremmo dare un tipo di dati stringa. Se un utente immette un tipo di dati che non è una stringa, Argparser lo cambierà in una stringa. Per impostare il tipo predefinito per un argomento, esegui il codice seguente.

import os import argparse parser = argparse.ArgumentParser(description = "Path Existence Checker", using="cla.py percorso") parser.add_argument("--path", help="inserisci un percorso per verificare se esiste", type=str) args = parser.parse_args() input_path = args.percorso if input_path == Nessuno: exit() elif os.sentiero.isdir(input_path): print("Il percorso esiste ed è una directory") elif os.sentiero.isfile(input_path): print("Il percorso esiste ed è un file") else: print("Il percorso non esiste")

Produzione:

specificando il tipo di dati degli argomenti

Conclusione

Questa è solo la base dell'analisi degli argomenti utilizzando la libreria Argparse. Dopo aver seguito questo tutorial, si consiglia di leggere la documentazione ufficiale per esplorare ulteriori trucchi per l'utilizzo di questa libreria. Potresti anche voler vedere il post sull'utilizzo della registrazione in python, che è molto utile per scrivere grandi applicazioni e un facile debug.

OpenTTD vs Simutrans
Creare la tua simulazione di trasporto può essere divertente, rilassante ed estremamente allettante. Ecco perché devi assicurarti di provare quanti pi...
Tutorial OpenTTD
OpenTTD è uno dei giochi di simulazione aziendale più popolari in circolazione. In questo gioco, devi creare una meravigliosa attività di trasporto. T...
SuperTuxKart per Linux
SuperTuxKart è un fantastico titolo progettato per offrirti l'esperienza di Mario Kart gratuitamente sul tuo sistema Linux. È piuttosto impegnativo e ...