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

  • William Charles
  • 0
  • 4755
  • 390
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.

Así es como 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 el “No te repitas” Principios (SECOS). Sin Click, escribirás un código que es frágil y requiere mucho mantenimiento cada vez que ocurre algún cambio..

Aquí hay una interfaz de línea de comando 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 : print ('¡No ha pasado ningún comando en!') sino: para un argumento en: si a == '--help': print ('Programa de línea de comando básico') print ('Opciones:') print (' --help -> muestra 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 ([' Zanahoria ',' Papa ',' Nabo '])) else: print (' Argumento no reconocido. ') If __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 descontrolarse fácilmente.

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

import click import random @ click.command () @ click.option ('- monty', default = False, help = "Show a Monty Python quote.") @ click.option ('- veg', default = False , help = "Mostrar un vegetal al azar.") def do_work (monty, veg): "" "El ejemplo de clic básico seguirá sus comandos" "" if monty: print ('¿Qué es esto, entonces? "Romanes eunt domus "? La gente llama a Romanes, ¿van, 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:

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 parecer igual para el usuario final, el código subyacente es más simple y ahorrará mucho tiempo codificando. 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 Python. Aprenda a usar el entorno virtual de Python. Ya sea que sea un desarrollador experimentado de Python o que recién esté comenzando, aprenda a configurar un entorno virtual Es esencial para cualquier proyecto de Python. . 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 estos shells interactivos en línea gratuitos Pruebe Python en su navegador con estos shells interactivos en línea gratuitos Ya sea que esté revisando estos ejemplos de Python o revisando los conceptos básicos de matrices y listas, puede prueba el código directamente en tu navegador. Aquí están los mejores intérpretes de Python en línea que hemos encontrado. 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. Obtenga más información sobre las 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. Nuestra guía 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:

import click import random def veg (): "" "El método básico devolverá un vegetal al azar" "" print (random.choice (['Carrot', 'Potato', 'Turnip', 'Parsnip'])) if __name__ = = '__principal__': 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 vegetales a la salida.") def veg (total): "" "El método básico devolverá un vegetal al azar" " "para el número en el 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 verás una buena página de ayuda, junto con las opciones que puedes usar:

python click_example.py --help

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:

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

import click import random @ click.command () @ click.option ('- gravy', default = False, help = "Append" with gravy "to the vegetables.") @ click.option ('- total', default = 3, help = "Número de vegetales a producir.") def veg (total, salsa): "" "El método básico devolverá un vegetal aleatorio" "" para el número en el rango (total): elección = random.choice ( ['Zanahoria', 'Patata', 'Nabo', 'Chirivía']) si salsa: imprimir (f 'elección con salsa') más: imprimir (opción) si __name__ == '__main__': veg ()

Aún más opciones de clics

Una vez que conozca los conceptos básicos, puede comenzar a buscar opciones de clics 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 nuestra guía del diccionario Python.

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

import click import random @ click.command () def add (): "" "El método básico agregará dos números juntos". "pass if __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, type = int, help = "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] print (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

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 sólida comprensión de los conceptos básicos.

Si está buscando algunos proyectos de Python para practicar sus nuevas habilidades encontradas, ¿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? Tristemente, es imposible para programar directamente un Arduino en Python, pero puedes controlarlo a través de USB usando un programa Python. Así es cómo. , o qué tal 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, le mostraré cómo leer y escribir en Hojas de cálculo de Google utilizando Python. ? Cualquiera de estos proyectos sería perfecto para convertir a Click!




Nadie ha comentado sobre este artículo todavía.

Sobre tecnología moderna, simple y asequible.
Tu guía en el mundo de la tecnología moderna. Aprenda a usar las tecnologías y los dispositivos que nos rodean todos los días y aprenda a descubrir cosas interesantes en Internet.