Programación

Conceptos básicos sobre el análisis de argumentos de la línea de comandos en Python

Conceptos básicos sobre el análisis de argumentos de la línea de comandos en Python

Las aplicaciones de línea de comandos son uno de los tipos de aplicaciones más antiguos y utilizados. Si es un usuario experimentado de Linux, es posible que apenas haya utilizado herramientas de GUI en lugar de herramientas de línea de comandos para realizar la misma tarea. Por ejemplo, Anaconda, el administrador de paquetes para python, tiene herramientas de línea de comandos llamadas Conda y una herramienta GUI llamada anaconda navigator.

Lo que hace que la aplicación de línea de comandos sea popular entre los desarrolladores es que consumen muy pocos recursos en comparación con su contraparte GUI y brindan un mejor rendimiento.

Python es un lenguaje simple y poderoso para crear aplicaciones de línea de comandos. Proporciona toneladas de bibliotecas ya escritas por muchos grandes programadores, lo que facilita nuestra tarea ya que no necesitamos reescribir el mismo código.

En este tutorial, le presentaré la biblioteca Argparse de Python, que puede analizar los argumentos de las aplicaciones de línea de comando. Esto es útil para crear excelentes interfaces de línea de comandos. Para seguir este tutorial, se recomienda tener instalada la última versión de Python. También tenemos un tutorial paso a paso sobre cómo actualizar Python a la última versión en Linux.

Introducción

El análisis de argumentos es un concepto importante que debemos utilizar para crear interfaces de línea de comandos potentes y fáciles de usar. Si ha utilizado aplicaciones de línea de comandos anteriormente, es posible que haya notado que podemos agregar argumentos a las aplicaciones de línea de comandos para configurar las opciones de la herramienta.

Por ejemplo, si ha utilizado el ls comando en Linux, que se usa para enumerar los elementos del directorio de trabajo actual, es posible que haya visto un resultado similar, como se muestra en la imagen de abajo.

comando ls en Linux

Como puede ver en la imagen, enumera los elementos en el directorio actual. También podemos utilizar el ls comando de manera más beneficiosa al darle un argumento como lo hice en el siguiente comando.

ls -a

Ahora, al escribir este comando en la terminal, enumerará todos los elementos presentes en el directorio de trabajo actual, incluidos los elementos ocultos. Como puede ver, al proporcionar argumentos en el comando, podemos especificar fácilmente las opciones del comando de una manera amigable. Aquí es donde entran en juego los argumentos. Hacen que las aplicaciones de la línea de comandos sean más útiles y amigables.

Quizás se pregunte cuándo y cómo agregar argumentos de línea de comandos en sus aplicaciones. Imagine que está creando una aplicación que necesita una entrada del usuario del nombre de archivo que procesará la aplicación.

Podemos hacerlo de dos formas:

El primer truco es bueno, pero el segundo es más útil ya que el usuario puede dar todas las opciones en un comando, lo que lo hace más fácil de usar.

Python incluye una gran biblioteca llamada "argparse", que es útil para crear y analizar argumentos de línea de comandos y puede construir interfaces de línea de comandos poderosas para los usuarios muy fácilmente. Echemos un vistazo profundo a la biblioteca argparse de Python.

Biblioteca Argparse

La argumentar La biblioteca es una forma fácil y útil de analizar argumentos mientras se crean aplicaciones de línea de comandos en Python. Aunque hay otros argumentos para analizar bibliotecas como optparse, getopt, etc., la argumentar La biblioteca es oficialmente la forma recomendada para analizar los argumentos de la línea de comandos.

También está disponible en la biblioteca estándar de Python, por lo que no necesitamos ninguna configuración manual. La argumentar la biblioteca se ha construido utilizando el optar biblioteca de Python, pero argumentar es más útil y amigable para los desarrolladores que el optar Biblioteca.

Demostración práctica de Argparse

Veamos una demostración práctica de cómo usar la biblioteca argparse para crear una interfaz de línea de comandos simple. Este programa aceptará una ruta y verificará si la ruta existe o no y si existe, luego imprimirá si es un archivo o un directorio.

import os import argparse parser = argparse.Analizador ArgumentParser ('description = "Path Existence Checker").add_argument ("- ruta", ayuda = "ingrese una ruta para verificar si existe") args = analizador.parse_args () input_path = args.camino si os.camino.isdir (input_path): print ("La ruta existe y es un directorio") elif os.camino.isfile (input_path): print ("La ruta existe y es un archivo") else: print ("La ruta no existe")
Al ejecutar el programa anterior, podemos verificar si la ruta existe o no.

demostración de analizar argumentos con argparse

También puede utilizar el -h argumento con el programa, que es el argumento predeterminado para mostrar mensajes de ayuda.

argparse mensaje de ayuda predeterminado

Déjame explicarte cómo funciona el programa anterior. En las dos primeras líneas, importamos los módulos que necesitaremos en el programa. La os se ha importado el módulo para comprobar si la ruta existe o no, y si es un archivo o un directorio. Si desea obtener más información sobre el os módulo, puede consultar nuestra guía sobre cómo trabajar con el sistema operativo en python.En la siguiente línea, importamos la biblioteca argparse requerida para crear y analizar argumentos. En la tercera línea, creamos un objeto analizador usando la clase ArgumentParser de la biblioteca argparse. Esta clase también acepta una descripción de parámetro opcional, que se mostrará en el mensaje de ayuda.En la siguiente línea, hemos creado un argumento llamado ruta usando el método add_argument () del objeto analizador y damos el detalle en el parámetro de ayuda que se mostrará en el mensaje de ayuda como hemos visto en la salida anterior.A continuación, analizamos los argumentos utilizando el método parse_args () del objeto analizador y accedemos a la ruta de entrada del usuario como argumento. Obtuvimos la ruta que el usuario ingresó en el argumento y luego la usamos con el módulo del sistema operativo para verificar si es un archivo o carpeta. Si no está entre los dos, imprimirá que la ruta no existe.

Personalización

Veamos algunas de las personalizaciones que podemos hacer en nuestra interfaz de línea de comandos con la ayuda de la biblioteca argparse.

Ayuda de uso personalizado

Cuando ejecutamos el programa de demostración que creamos anteriormente con el -h parámetro, obtenemos la ayuda del programa como la salida que generó la biblioteca argparse. Si nota el mensaje de ayuda, hay una ayuda de uso en la línea superior que nos muestra cómo usarla.En nuestro programa de demostración, tenemos la ayuda de uso estándar. Todavía podemos personalizarlo fácilmente usando el parámetro de uso mientras creamos el objeto del analizador usando la clase ArgumentParser (). Mire el código a continuación, que se modificará en nuestro programa de demostración.
analizador = argparse.ArgumentParser (descripción = "Comprobador de existencia de ruta", uso = "cla.ruta py ")
Aquí está el resultado:

ayuda de uso personalizado en argparse

Como podemos ver en el resultado, la ayuda de uso se ha cambiado a la que especificamos en el parámetro de uso de la clase ArgumentParser ().

Personalización de argumentos

También podemos usar la biblioteca Argparse para personalizar los argumentos como si los argumentos serán requeridos o no, dando a un argumento un valor predeterminado.

Añadiendo valor predeterminado

Podemos dar a los argumentos un valor predeterminado usando el parámetro predeterminado para el add_argument () método. Por ejemplo, vea el siguiente código.

import os import argparse parser = argparse.ArgumentParser (descripción = "Comprobador de existencia de ruta", uso = "cla.py path ") analizador.add_argument ("- ruta", ayuda = "ingrese una ruta para verificar si existe", predeterminado = "nombre de archivo.txt ") args = analizador.parse_args () input_path = args.ruta si input_path == None: exit () elif os.camino.isdir (input_path): print ("La ruta existe y es un directorio") elif os.camino.isfile (input_path): print ("La ruta existe y es un archivo") else: print ("La ruta no existe")

Al ejecutar el programa anterior sin ningún argumento, obtendremos la siguiente salida. Como se muestra en la salida, el programa verifica la ruta Nombre del archivo.TXT, que establecemos en el parámetro predeterminado.

dando un valor predeterminado a los argumentos

Establecimiento de requisitos de argumentos

También podemos usar la biblioteca Argparse para establecer los requisitos del argumento, i.mi., si los argumentos serán necesarios o no. Para hacerlo, necesitamos usar el parámetro requerido, como se muestra en el siguiente código.

import os import argparse parser = argparse.ArgumentParser (descripción = "Comprobador de existencia de ruta", uso = "cla.py path ") analizador.add_argument ("- ruta", ayuda = "ingrese una ruta para verificar si existe", predeterminado = "nombre de archivo.txt ", obligatorio = verdadero) args = analizador.parse_args () input_path = args.ruta si input_path == None: exit () elif os.camino.isdir (input_path): print ("La ruta existe y es un directorio") elif os.camino.isfile (input_path): print ("La ruta existe y es un archivo") else: print ("La ruta no existe")

Al ejecutar el código anterior sin ningún argumento, obtendrá un error que indica que se requieren los siguientes argumentos.

establecer los requisitos de los argumentos

Tipo de argumento

También podemos establecer el tipo de datos utilizado en el argumento. Por ejemplo, si necesitamos la ruta, deberíamos dar un tipo de datos de cadena. Si un usuario ingresa un tipo de datos que no es una cadena, Argparser lo cambiará a una cadena. Para establecer el tipo predeterminado para un argumento, ejecute el siguiente código.

import os import argparse parser = argparse.ArgumentParser (descripción = "Comprobador de existencia de ruta", uso = "cla.py path ") analizador.add_argument ("- ruta", ayuda = "ingrese una ruta para verificar si existe", tipo = str) args = analizador.parse_args () input_path = args.ruta si input_path == None: exit () elif os.camino.isdir (input_path): print ("La ruta existe y es un directorio") elif os.camino.isfile (input_path): print ("La ruta existe y es un archivo") else: print ("La ruta no existe")

Producción:

especificando el tipo de datos de los argumentos

Conclusión

Estos son solo los conceptos básicos para analizar argumentos utilizando la biblioteca Argparse. Después de seguir este tutorial, se recomienda leer la documentación oficial para explorar más trucos para usar esta biblioteca. Es posible que también desee ver la publicación sobre el uso del inicio de sesión en Python, que es muy útil para escribir aplicaciones grandes y depurar fácilmente.

Revisión del mouse inalámbrico Microsoft Sculpt Touch
Recientemente leí sobre el Microsoft Sculpt Touch mouse inalámbrico y decidí comprarlo. Después de usarlo por un tiempo, decidí compartir mi experienc...
Trackpad en pantalla y puntero del mouse AppyMouse para tabletas Windows
Los usuarios de tabletas a menudo pierden el puntero del mouse, especialmente cuando son habituales para usar las computadoras portátiles. Los teléfon...
El botón central del mouse no funciona en Windows 10
La botón central del ratón le ayuda a desplazarse por páginas web largas y pantallas con una gran cantidad de datos. Si eso se detiene, bueno, termina...