Anuncio

Click es un paquete de Python para escribir interfaces de línea de comandos. Produce documentación hermosa para usted y le permite construir interfaces de línea de comandos en tan solo una línea de código. En resumen: es increíble y puede ayudar a llevar sus programas al siguiente nivel.

Aquí le mostramos cómo puede usarlo para animar sus proyectos de Python.

Escribir programas de línea de comandos sin clic

Es posible escribir programas de línea de comandos sin usar Click, pero hacerlo requiere más esfuerzo y mucho más código. Debe analizar los argumentos de la línea de comandos, realizar la validación, desarrollar la lógica para manejar diferentes argumentos y crear un menú de ayuda personalizado. ¿Quieres agregar una nueva opción? Entonces modificará su función de ayuda.

No hay nada de malo en escribir su propio código, y hacerlo es una excelente manera de aprender Python, pero Click le permite seguir los principios de "No repetir" (DRY). Sin Click, escribirás un código que es frágil y requiere mucho mantenimiento cada vez que ocurre algún cambio.

instagram viewer

Aquí hay una interfaz de línea de comando simple codificada sin Click:

sys de importación import random def do_work (): Función para manejar el uso de la línea de comandos args = sys.argv args = args [1:] # El primer elemento de args es el nombre del archivo si len (args) == 0: print ('¡No ha pasado ningún comando en!') más: para un argumento en: si a == '--help': print ('Programa de línea de comando básico') print ('Opciones:') print ('- -ayuda -> mostrar este menú de ayuda básico. ') print (' --monty -> muestra una cita de Monty Python. ') print (' --veg -> muestra un vegetal al azar ') elif a ==' --monty ': print (' Qué es esto, ¿entonces? ¿"Romanes eunt domus"? La gente llama a Romanes, ¿van, la casa? ') Elif a ==' --veg ': print (random.choice ([' Carrot ',' Potato ',' Turnip '])) else: print (' Argumento no reconocido. ') if __name__ ==' __main__ ': do_work ()
Ejemplo de interfaz de línea de comando de Python

Estas 27 líneas de Python funcionan bien pero son muy frágiles. Cualquier cambio que realice en su programa necesitará muchos otros códigos de soporte para cambiar. Si cambia el nombre de un argumento, deberá actualizar la información de ayuda. Este código puede crecer fácilmente fuera de control.

Aquí está la misma lógica con Click:

Importar clic. importar al azar @ click.command () @ click.option ('- monty', default = False, help = 'Mostrar una cotización de Monty Python.') @ click.option ('- veg', predeterminado = False, help = 'Mostrar un vegetal al azar') def do_work (monty, veg): el ejemplo de clic básico seguirá sus comandos si monty: print ('¿Qué es esto, entonces? ¿"Romanes eunt domus"? La gente llama a Romanes, ¿van a la casa? ') If veg: print (random.choice ([' Carrot ',' Potato ',' Turnip '])) if __name__ ==' __main__ ': do_work ()

Este ejemplo de Click implementa la misma lógica en 16 líneas de código. Los argumentos se analizan por usted y se genera la pantalla de ayuda:

Python Click genera automáticamente la pantalla de ayuda

Esta comparación básica muestra cuánto tiempo y esfuerzo puede ahorrar usando programas como Click. Si bien la interfaz de la línea de comandos puede parecer la misma para el usuario final, el código subyacente es más simple y ahorrará mucho tiempo en la codificación. Cualquier cambio o actualización que escriba en el futuro también verá aumentos significativos en el tiempo de desarrollo.

Comenzando con Click for Python

Antes de usar Click, es posible que desee configurar un entorno virtual Aprenda a usar el entorno virtual de PythonYa sea que sea un desarrollador experimentado de Python, o que recién esté comenzando, aprender a configurar un entorno virtual es esencial para cualquier proyecto de Python. Lee mas . Esto evitará que sus paquetes de Python entren en conflicto con su sistema Python u otros proyectos en los que pueda estar trabajando. Tambien podria prueba Python en tu navegador Pruebe Python en su navegador con estos shells interactivos en línea gratuitosYa sea que esté revisando estos ejemplos de Python o revisando los conceptos básicos de matrices y listas, puede probar el código directamente en su navegador. Aquí están los mejores intérpretes de Python en línea que hemos encontrado. Lee mas si quieres jugar con Python y Click.

Finalmente, asegúrese de estar ejecutando Python versión 3. Es posible usar Click con Python versión 2, pero estos ejemplos están en Python 3. Aprenda más sobre el diferencias entre Python 2 y Python 3.

Una vez listo, instale Click desde la línea de comando usando PIP (Cómo instalar PIP para Python):

pip install click

Escribir su programa de primer clic

En un editor de texto, comience importando Click:

clic de importación

Una vez importado, cree un método y un principal punto de entrada. Nuestro Guía de Python OOP los cubre con mayor detalle, pero proporcionan un lugar para almacenar su código y una forma para que Python comience a ejecutarlo:

Importar clic. import random def veg (): El método básico devolverá una impresión vegetal aleatoria (random.choice (['Carrot', 'Potato', 'Turnip', 'Parsnip'])) if __name__ == '__main__': veg ()

Este script muy simple generará un vegetal aleatorio. Su código puede verse diferente, pero este simple ejemplo es perfecto para combinar con Click.

Guarda esto como click_example.py, y luego ejecútelo en la línea de comando (después de navegar a su ubicación):

python click_example.py

Deberías ver un nombre de vegetal al azar. Mejoremos las cosas agregando Click. Cambie su código para incluir los decoradores Click y un para lazo:

@ click.command () @ click.option ('- total', por defecto = 3, ayuda = 'Número de verduras a la salida.') def veg (total): el método básico devolverá un vegetal aleatorio para un número dentro del rango (total): print (random.choice (['Carrot', 'Potato', 'Turnip', 'Parsnip'])) if __name__ == '__main__': veg ()

Al correr, verás un vegetal al azar que se muestra tres veces.

Analicemos estos cambios. los @ click.command () configuraciones del decorador Haga clic para trabajar con la función que sigue inmediatamente al decorador. En este caso, este es el veg () función. Necesitará esto para cada método que quiera usar con Click.

los @ click.option el decorador configura el clic para aceptar parámetros desde la línea de comando, que pasará a su método. Aquí se usan tres argumentos:

  1. -total: Este es el nombre de la línea de comando para total argumento.
  2. defecto: Si no especifica el argumento total al usar su script, Click usará el valor predeterminado.
  3. ayuda: Una oración corta que explica cómo usar su programa.

Veamos Click en acción. Desde la línea de comando, ejecute su script, pero pase el total argumento como este:

python click_example.py --total 10

Configurando –Total 10 desde la línea de comando, su script imprimirá diez vegetales al azar.

Si pasas en el -ayuda bandera, verá una buena página de ayuda, junto con las opciones que puede usar:

python click_example.py --help
Ayuda de Python Click

Agregar más comandos

Es posible usar muchos decoradores Click en la misma función. Agregue otra opción de clic a la verduras función:

@ click.option ('- salsa', por defecto = False, ayuda = 'Agregar "con salsa" a las verduras.')

No olvides pasar esto al método:

def veg (total, salsa):

Ahora, cuando ejecuta su archivo, puede pasar el salsa bandera:

python click_example.py --gravy y

La pantalla de ayuda también ha cambiado:

Pantalla de ayuda de Python Click

Aquí está todo el código (con algunas refactorizaciones menores para la limpieza):

Importar clic. importar al azar @ click.command () @ click.option ('- salsa', por defecto = False, ayuda = 'Agregar "con salsa" a las verduras.') @ click.option ('- total', por defecto = 3, ayuda = 'Número de verduras a la salida.') def veg (total, salsa): el método básico devolverá un vegetal aleatorio para un número dentro del rango (total): opción = random.choice (['Carrot', 'Potato', 'Turnip', 'Parsnip']) if gravy: print (f '{choice} with gravy') else: print (choice) if __name__ == '__main__': veg ()

Aún más opciones de clics

Una vez que conozca los conceptos básicos, puede comenzar a buscar opciones de clic más complejas. En este ejemplo, aprenderá cómo pasar varios valores a un solo argumento, que Click convertirá en una tupla. Puedes aprender más sobre tuplas en nuestro guía del diccionario de Python.

Crea un nuevo archivo llamado click_example_2.py. Aquí está el código de inicio que necesita:

Importar clic. importar al azar @ click.command () def add (): el método básico agregará dos números juntos. pasar si __name__ == '__main__': add ()

No hay nada nuevo aquí. La sección anterior explica este código en detalle. Agrega un @ click.option llamado números:

@ click.option ('- números', nargs = 2, tipo = int, ayuda = 'Agregar dos números juntos')

El único código nuevo aquí son los nargs = 2, y el tipo = int opciones. Esto le dice a Click para aceptar dos valores para números opción, y que ambos deben ser de tipo entero. Puede cambiar esto a cualquier número o tipo de datos (válido) que desee.

Finalmente, cambie el añadir método para aceptar el números argumento, y hacer un procesamiento con ellos:

def add (números): el método básico agregará dos números juntos. resultado = números [0] + números [1] imprimir (f '{números [0]} + {números [1]} = {resultado}')

Se puede acceder a cada valor que ingrese a través de números objeto. Aquí se explica cómo usarlo en la línea de comando:

python click_example_2.py --números 1 2
Python Click nargs result

Click es la solución para las utilidades de Python

Como has visto, Click es fácil de usar pero muy poderoso. Si bien estos ejemplos solo cubren los conceptos básicos de Click, hay muchas más características que puede aprender ahora que tiene una comprensión sólida de los conceptos básicos.

Si está buscando algunos proyectos de Python para practicar sus nuevas habilidades encontradas, ¿por qué no aprender? Cómo controlar un Arduino con Python Cómo programar y controlar un Arduino con PythonLamentablemente, es imposible programar directamente un Arduino en Python, pero puede controlarlo a través de USB utilizando un programa Python. Así es cómo. Lee mas o qué tal Leer y escribir en Google Sheets con Python Cómo leer y escribir en hojas de cálculo de Google con PythonPython puede parecer extraño e inusual, sin embargo, es fácil de aprender y usar. En este artículo, le mostraré cómo leer y escribir en Hojas de cálculo de Google utilizando Python. Lee mas ? ¡Cualquiera de estos proyectos sería perfecto para convertir a Click!

Joe se graduó en Ciencias de la Computación de la Universidad de Lincoln, Reino Unido. Es un desarrollador de software profesional, y cuando no está volando drones o escribiendo música, a menudo se lo puede encontrar tomando fotos o produciendo videos.