Pitón

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

Cómo agregar argumentos de línea de comandos a un script de Python?
Si ha desarrollado una aplicación o un script de Python destinado a ejecutarse principalmente en los emuladores de terminal o incluso en aplicaciones GUI, agregar argumentos en la línea de comandos puede mejorar su usabilidad, legibilidad del 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 se ven 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 "Argumentar". 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:

importar argparse
analizador = argparse.ArgumentParser (description = 'Un programa de prueba.')
args = 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 ha guardado el código de muestra indicado anteriormente en un archivo llamado "prueba.py ”, ejecutar los siguientes comandos le permitirá recibir mensajes de ayuda relacionados con el programa.

PS ./prueba.py -h
PS ./prueba.py --ayuda

Debería obtener un resultado similar a este:

uso: prueba.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 valores de argumentos analizados en su programa, los mensajes de ayuda comenzarán a mostrar descripciones de 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:

importar argparse
analizador = argparse.ArgumentParser (description = 'Un programa de prueba.')
analizador.add_argument ("print_string", help = "Imprime el argumento proporcionado.")
args = analizador.parse_args ()
imprimir (argumentos.print_string)

Se ha añadido 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: prueba.py [-h] [print_string]
Un programa de prueba de 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 tiene 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 utilizar "-" (guión doble) y cambiar sus valores predeterminados mediante el argumento "predeterminado".

importar argparse
analizador = argparse.ArgumentParser (description = 'Un programa de prueba.')
analizador.add_argument ("- print_string", help = "Imprime el argumento proporcionado.", default =” Una cadena aleatoria.")
args = analizador.parse_args ()
imprimir (argumentos.print_string)

Ahora, cuando ejecute la "prueba.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.

PS ./prueba.py --print_string LinuxHint.com
LinuxHint.com

Tenga en cuenta que puede hacer que un argumento opcional sea obligatorio mediante el uso de un argumento adicional "required = True".

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

importar argparse
analizador = argparse.ArgumentParser (description = 'Un programa de prueba.')
analizador.add_argument (“- p”, "--print_string", help = "Imprime el argumento proporcionado.", default =” Una cadena aleatoria.")
args = analizador.parse_args ()
imprimir (argumentos.print_string)

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

PS ./prueba.py -p LinuxHint.com

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.

importar argparse
analizador = argparse.ArgumentParser (description = 'Un programa de prueba.')
analizador.add_argument ("- p", "--print_string", help = "Imprime el argumento proporcionado.", tipo = int)
args = analizador.parse_args ()
imprimir (argumentos.print_string)

Intente ejecutar el siguiente comando:

PS ./prueba.py -p LinuxHint.com

Debería recibir un error como este:

uso: prueba.py [-h] [-p PRINT_STRING]
prueba.py: error: argumento -p / - print_string: valor int no válido: 'LinuxHint.com '

Proporcionar un valor entero le dará el resultado correcto:

PS ./prueba.py -p 1000 1000

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 "acción".

importar argparse
analizador = argparse.ArgumentParser (description = 'Un programa de prueba.')
analizador.add_argument ("- p", "--print_string", help = "Imprime el argumento proporcionado.", action =" store_true ")
args = analizador.parse_args ()
imprimir (argumentos.print_string)

Ejecute el siguiente comando para obtener un simple "Verdadero" como resultado:

PS ./prueba.py -p

Si ejecuta el script sin el argumento "-p", se asignará un valor "Falso" 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:

importar argparse
analizador = argparse.ArgumentParser (description = 'Un programa de prueba.')
analizador.add_argument ("- p", "--print_string", help = "Imprime el argumento proporcionado.", nargs = '*')
args = analizador.parse_args ()
imprimir (argumentos.print_string)

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

PS ./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. Visite la documentación oficial para obtener una explicación completa del módulo.

Los mejores juegos para jugar con el seguimiento de manos
Oculus Quest presentó recientemente la gran idea del seguimiento manual sin controladores. Con un número cada vez mayor de juegos y actividades que ej...
Cómo mostrar la superposición de OSD en aplicaciones y juegos de Linux en pantalla completa
Jugar juegos en pantalla completa o usar aplicaciones en modo de pantalla completa sin distracciones puede aislarlo de la información relevante del si...
Las 5 mejores cartas de captura de juegos
Todos hemos visto y amado la transmisión de juegos en YouTube. PewDiePie, Jakesepticye y Markiplier son solo algunos de los mejores jugadores que han ...