Cómo agregar argumentos de línea de comando a un script de Python

How Add Command Line Arguments Python Script



Si ha desarrollado una aplicación o un script de Python destinado a ejecutarse principalmente en emuladores de terminal o incluso en aplicaciones GUI, agregar argumentos de línea de comando puede mejorar su usabilidad, legibilidad de código, estructura de la aplicación y la facilidad de uso general de la aplicación para los usuarios finales. Estos argumentos de la línea de comandos también se denominan opciones o conmutadores y funcionan de manera similar a los argumentos que normalmente ve en los scripts bash y otros programas basados ​​en C / C ++.

Para agregar argumentos a los scripts de Python, tendrá que usar un módulo incorporado llamado argparse. Como sugiere el nombre, analiza los argumentos de la línea de comandos que se utilizan al iniciar una aplicación o un script de Python. El módulo argparse también verifica estos argumentos analizados para asegurarse de que sean del tipo adecuado. Se generan errores si hay valores no válidos en los argumentos.







El uso del módulo argparse se puede entender mejor a través de ejemplos. A continuación se muestran algunos ejemplos de código que lo ayudarán a comenzar con el módulo argparse.



Ejemplo 1: generar argumento y mensaje de ayuda

Considere el ejemplo de código a continuación:



importarargparse

analizador =argparse.ArgumentParser(descripción='Un programa de prueba'.)

argumentos= analizador.parse_args()

La primera declaración importa el módulo argparse. A continuación, se crea una nueva instancia del objeto ArgumentParser y se proporciona una breve descripción del programa como argumento. El objeto ArgumentParser es necesario para convertir los valores de los argumentos de la línea de comandos en tipos de datos entendidos por Python. Esto se hace mediante el método parse_args del objeto ArgumentParser, como se muestra en la última declaración.





Suponiendo que haya guardado el ejemplo de código indicado anteriormente en un archivo llamado test.py, ejecutar los comandos a continuación le proporcionará mensajes de ayuda relacionados con el programa.

$ ./prueba.py-h

$ ./prueba.py--ayuda

Debería obtener un resultado similar a este:



uso: test.py [-h]


Un programa de prueba.


argumentos opcionales:

-h, --help mostrar este mensaje de ayuda y salir

Tenga en cuenta que no se ha agregado ninguna lógica para manejar argumentos analizados y convertirlos en objetos al ejemplo de código mencionado anteriormente. Por lo tanto, los mensajes de ayuda para argumentos individuales no se muestran en la salida. Una vez que agregue lógica para manejar los valores de los argumentos analizados en su programa, los mensajes de ayuda comenzarán a mostrar la descripción de los argumentos individuales.

Ejemplo 2: manejar un argumento de cadena

Para agregar argumentos aceptables para su secuencia de comandos de Python, debe usar el método add_argument. Eche un vistazo al siguiente código:

importarargparse

analizador =argparse.ArgumentParser(descripción='Un programa de prueba'.)

analizador.add_argument('print_string', ayuda='Imprime el argumento proporcionado.')

argumentos= analizador.parse_args()

impresión(argumentos.print_string)

Se ha agregado una nueva declaración que muestra el uso del método add_argument. Cualquier argumento agregado al iniciar el script será tratado como un objeto print_string por ArgumentParser.

Tenga en cuenta que, de forma predeterminada, el método add_argument trata los valores recuperados de los argumentos como cadenas, por lo que no tiene que especificar explícitamente el tipo en este caso. También se asigna un valor predeterminado de Ninguno a los argumentos agregados, a menos que se anule.

Una vez más, eche un vistazo al mensaje de ayuda:

uso: test.py [-h] [print_string]


Un programa de prueba.


argumentos posicionales:

print_string Imprime el argumento proporcionado.


argumentos opcionales:

-h, --help mostrar este mensaje de ayuda y salir

Una de las líneas en la salida dice argumentos posicionales. Dado que no se define ninguna palabra clave para el argumento, actualmente el argumento se trata como un argumento posicional donde el orden y la posición del argumento proporcionado tienen un efecto directo en el programa. Los argumentos posicionales también son obligatorios, a menos que cambie manualmente su comportamiento.

Para definir y analizar argumentos opcionales, puede usar - (guión doble) y cambiar sus valores predeterminados usando el argumento predeterminado.

importarargparse

analizador =argparse.ArgumentParser(descripción='Un programa de prueba'.)

analizador.add_argument('--print_string', ayuda='Imprime el argumento proporcionado.',defecto=Aaleatorio cuerda.)

argumentos= analizador.parse_args()

impresión(argumentos.print_string)

Ahora, cuando ejecute el script test.py sin ningún argumento, debería obtener una cadena aleatoria. como salida. También puede utilizar opcionalmente la palabra clave –print_string para imprimir cualquier cadena de su elección.

$ ./prueba.py--print_string LinuxHint.conLinuxHint.com

Tenga en cuenta que puede hacer que un argumento opcional sea obligatorio utilizando un argumento adicional required = True.

Por último, también puede definir versiones abreviadas del argumento utilizando - (guión único) para reducir la verbosidad.

importarargparse

analizador =argparse.ArgumentParser(descripción='Un programa de prueba'.)

analizador.add_argument(-pag, '--print_string', ayuda='Imprime el argumento proporcionado.',defecto=Aaleatorio cuerda.)

argumentos= analizador.parse_args()

impresión(argumentos.print_string)

Ejecutar el siguiente comando debería darle el mismo resultado que el anterior:

$ ./prueba.py-p LinuxHint.con

Ejemplo 3: manejar un argumento entero

Para manejar argumentos que necesitan valores enteros, debe establecer la palabra clave type en int para permitir la validación y generar errores en caso de que no se cumpla la condición.

importarargparse

analizador =argparse.ArgumentParser(descripción='Un programa de prueba'.)

analizador.add_argument('-pag', '--print_string', ayuda='Imprime el argumento proporcionado.', escribe=En t)

argumentos= analizador.parse_args()

impresión(argumentos.print_string)

Intente ejecutar el siguiente comando:

$ ./prueba.py-p LinuxHint.con

Debería recibir un error como este:

uso: test.py [-h] [-p PRINT_STRING]

test.py: error: argumento -p / - print_string: valor int no válido: 'LinuxHint.com'

Proporcionar un valor entero le dará el resultado correcto:

$ ./prueba.py-pag10001000

Ejemplo 4: Manejar alternancia de verdadero y falso

Puede pasar argumentos sin ningún valor para tratarlos como indicadores Verdadero y Falso utilizando el argumento de acción.

importarargparse

analizador =argparse.ArgumentParser(descripción='Un programa de prueba'.)

analizador.add_argument('-pag', '--print_string', ayuda='Imprime el argumento proporcionado.',acción='store_true')

argumentos= analizador.parse_args()

impresión(argumentos.print_string)

Ejecute el siguiente comando para obtener un True simple como resultado:

$ ./prueba.py-pag

Si ejecuta el script sin el argumento -p, se asignará un valor False en su lugar. El valor store_true de la palabra clave action asigna un valor True a la variable print_string siempre que se especifica explícitamente el argumento -p; de lo contrario, se asigna False a la variable.

Ejemplo 5: tratar los valores de los argumentos como una lista

Si desea obtener varios valores a la vez y almacenarlos en la lista, debe proporcionar la palabra clave nargs en el siguiente formato:

importarargparse

analizador =argparse.ArgumentParser(descripción='Un programa de prueba'.)

analizador.add_argument('-pag', '--print_string', ayuda='Imprime el argumento proporcionado.',nargs='*')

argumentos= analizador.parse_args()

impresión(argumentos.print_string)

Ejecute el siguiente comando para probar el código anterior:

$ ./prueba.py-p a b

Debería obtener un resultado como este:

['a', 'b']

Conclusión

El módulo argparse es bastante completo con toneladas de opciones para modificar el comportamiento de las aplicaciones de línea de comandos y analizar los valores proporcionados por el usuario. Estos ejemplos solo tocan el uso básico del módulo argparse. Para aplicaciones avanzadas y complejas, es posible que necesite diferentes implementaciones. Visita el documentación oficial para una explicación completa del módulo.