Cómo crear sus propios programas de línea de comandos en Python con un clic

Cómo crear sus propios programas de línea de comandos en Python con un clic / Programación

Click es un paquete de Python para escribir interfaces de línea de comandos. Produce una hermosa documentación para usted y le permite crear 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 hacer 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 añadir una nueva opción? Estarás modificando tu función de ayuda entonces..

No hay nada de malo en escribir tu propio código, y hacerlo es una excelente manera de aprender Python, pero Click te permite seguir la “No te repitas” Principios (secos). Sin hacer clic, escribirá un código que es frágil y requiere mucho mantenimiento cada vez que se producen cambios..

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

import sys 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 : imprimir ('No has pasado ningún comando en!') else: para a en args: if a == '--help': imprimir ('Programa de línea de comandos básica') imprimir ('Opciones:') imprimir (' --help -> mostrar este menú de ayuda básico. ') imprimir (' --monty -> mostrar una cita de Monty Python. ') imprimir (' --veg -> mostrar un vegetal al azar ') elif a ==' - monty ': print (' ¿Qué es esto, entonces? ¿Romanes eunt domus? ¿La gente se llama Romanes, se van, la casa? ') elif a ==' --veg ': print (random.choice ([' Carrot ',' Potato ',' Turnip '])) else: print (' Argumento no reconocido. ') Si __name__ ==' __main__ ': do_work ()

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:

import click click import random @ click.command () @ click.option ('- monty', default = False, help = "Mostrar una cita de Monty Python") @ click.option ('- veg', default = False , help = "Mostrar un vegetal aleatorio".) def do_work (monty, veg): "" "El ejemplo del clic básico seguirá sus comandos" "" si monty: print ('¿Qué es esto, entonces? "Romanes eunt domus "? La gente llama Romanes, van, la casa? ') If veg: print (random.choice ([' Carrot ',' Potato ',' Turnip '))) if __name__ ==' __main__ ': do_work ()

Este ejemplo de clic 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:

Esta comparación básica muestra cuánto tiempo y esfuerzo puede ahorrar utilizando programas como Click. Si bien la interfaz de la línea de comandos puede parecerle lo mismo al 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á un aumento significativo en el tiempo de desarrollo.

Comenzando con Click para Python

Antes de usar Click, es posible que desee configurar un entorno virtual Aprenda a usar el entorno virtual de Python Aprenda a usar el entorno virtual de Python Ya sea que sea un desarrollador de Python con experiencia o simplemente esté comenzando, aprenda cómo 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. También puede probar Python en su navegador. Pruebe Python en su navegador con estas carcasas interactivas en línea gratuitas. Pruebe Python en su navegador con estas carcasas interactivas en línea gratuitas. Pruebe el código directamente en su navegador. Aquí están los mejores intérpretes de Python en línea que hemos encontrado. Lee más si quieres jugar con Python y hacer clic.

Finalmente, asegúrese de que está ejecutando Python versión 3. Es posible usar Click with Python versión 2, pero estos ejemplos están en Python 3. Obtenga más información sobre las diferencias entre Python 2 y Python 3.

Una vez que esté listo, instale Click desde la línea de comandos usando PIP (cómo instalar PIP para Python):

haga clic en instalar pip

Escribiendo tu programa de primer clic

En un editor de texto, comience importando Haga clic en:

clic de importación

Una vez importado, crea un método y un principal punto de entrada. Nuestra guía PyO de Python cubre esto con mayor detalle, pero proporcionan un lugar para almacenar su código y una manera para que Python comience a ejecutarlo:

Importar clic Importar aleatorio def veg (): "" "El método básico devolverá una impresión" "" vegetal aleatoria (random.choice (['' Zanahoria ',' Patata ',' Nabo ',' Pastinaca '))) si __name__ = = '__main__': veg ()

Este script muy simple dará salida a un vegetal al azar. Su código puede parecer diferente, pero este ejemplo simple es perfecto para combinar con Click.

Guardar 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 vegetal al azar. Vamos a mejorar las cosas añadiendo Click. Cambia tu código para incluir los decoradores Click y un para lazo:

@ click.command () @ click.option ('- total', default = 3, help = "Número de hortalizas a generar".) def veg (total): "" "El método básico devolverá una hortaliza al azar" " "para el 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.

Vamos a desglosar estos cambios. los @ click.command () Configurador de decorador Haga clic para trabajar con la función inmediatamente después del decorador. En este caso, este es el veg () función. Lo necesitarás para cada método que quieras usar con Click.

los @ clic.opción El decorador configura el clic para aceptar parámetros desde la línea de comando, que pasará a su método. Hay tres argumentos utilizados aquí:

  1. -total: Este es el nombre de línea de comando para el 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 tu programa..

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

python click_example.py --total 10

Configurando -total 10 Desde la línea de comandos, su script imprimirá diez verduras aleatorias..

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

python click_example.py --help

Añadiendo más comandos

Es posible utilizar muchos decoradores de clic en la misma función. Añadir otra opción de clic a la veg función:

@ click.option ('- gravy', default = False, help = "Append" with gravy "a las verduras")

No olvides pasar esto al método:

def veg (total, salsa):

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

python click_example.py --gravy y

La pantalla de ayuda también ha cambiado:

Aquí está el código completo (con una pequeña refactorización para la limpieza):

importar clic importar al azar @ click.command () @ click.option ('- gravy', por defecto = False, help = "Append" with gravy "a las verduras".) @ click.option ('- total', por defecto = 3, ayuda = "Número de vegetales a generar".) def veg (total, salsa): "" "El método básico devolverá un vegetal al azar" "" para el número dentro del rango (total): choice = random.choice ( ['Zanahoria', 'Patata', 'Nabo', 'Pastinaca']) if gravy: print (f 'choice with gravy') else: print (choice) if __name__ == '__main__': veg ()

Incluso más opciones de clic

Una vez que sepa lo básico, puede comenzar a ver opciones de clic más complejas. En este ejemplo, aprenderá cómo pasar varios valores a un solo argumento, que Click se convertirá en una tupla. Puede obtener más información sobre las tuplas en nuestra guía del diccionario de Python..

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

import click click import random @ click.command () def add (): "" "El método básico sumará dos números juntos." "" pase si __name__ == '__main__': add ()

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

@ clic.opción ('- números', nargs = 2, tipo = int, ayuda = "Suma dos números juntos")

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

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

def add (números): "" "El método básico sumará dos números juntos." "" resultado = números [0] + números [1] impresión (f 'números [0] + números [1] =  resultado')

Cada valor que usted pasa es accesible a través de la números objeto. Aquí le indicamos cómo usarlo en la línea de comando:

python click_example_2.py --números 1 2

Haga clic en es la solución para las utilidades de Python

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

Si está buscando algunos proyectos de Python para practicar sus nuevas habilidades, por qué no aprender a controlar un Arduino con Python Cómo programar y controlar un Arduino con Python Cómo programar y controlar un Arduino con Python Lamentablemente, es imposible para programar directamente un Arduino en Python, pero puede controlarlo por USB usando un programa Python. Así es cómo. Lea más, o sobre leer y escribir en Google Sheets con Python Cómo leer y escribir en Google Sheets con Python Cómo leer y escribir en Google Sheets con Python Python puede parecer extraño e inusual, sin embargo, es fácil de aprender y usar. En este artículo, te mostraré cómo leer y escribir en Google Sheets usando Python. Lee mas ? Cualquiera de estos proyectos sería perfecto para convertir a Click!

Explorar más sobre: ​​Tutoriales de codificación, Python.