Haga clic en Módulo en Python | Creación de increíbles utilidades de línea de comandos

Desde los albores de la era de las computadoras y antes del estallido de Internet, los programadores han estado utilizando herramientas de línea de comandos en un shell interactivo como un medio para comunicarse con las computadoras. Es un poco extraño que con todos los avances en las tecnologías UI/UX, muy pocas personas saben que también hay que crear hermosas interfaces de línea de comandos.
¿Alguna vez ha querido crear usted mismo una herramienta de línea de comandos que sea muy fácil de usar, eficiente y fácil de usar? Bueno, click es un paquete de Python que hace precisamente eso. Hay muchos paquetes de Python que podríamos usar en lugar de hacer clic , como argparse, docopt, etc., por lo que primero veremos por qué estamos usando hacer clic .

¿Por qué hacer clic ?

Hay un par de razones por las que hacer clic es la mejor herramienta para el trabajo.

  • Click es perezosamente componible sin restricciones.
  • Está completamente anidado.
  • Click tiene información sólida disponible para todos los parámetros y comandos para que pueda generar páginas de ayuda unificadas para la CLI completa y ayudar al usuario a convertir los datos de entrada según sea necesario.
  • Click tiene una gran comprensión de qué tipos son y puede dar al usuario mensajes de error consistentes si algo sale mal.

Instalación:

pip install click

Conceptos básicos de una interfaz de línea de comandos:

Según el tipo y el propósito de la CLI, puede tener una variedad de funcionalidades. Probablemente ya habrías usado pip, que también es una CLI. Algunas funciones básicas que tienen todas las CLI son:

  • Un argumento.
  • Una opción, que es un parámetro opcional.
  • Una bandera, esta es una opción especial que activa o desactiva una determinada función. Una de las banderas más comunes es –ayuda.

Programa simple usando clic :

# importing click
import click
  
@click.command()
def main():
    click.echo("This cli is built with click. ")
  
if __name__=="__main__":
    main()

Entonces, construyamos una herramienta de línea de comando que imprimirá un saludo para el nombre proporcionado en los argumentos.

Análisis de argumentos: Click utiliza los decoradores de Python para analizar argumentos relacionados con una función.

@click.command()
@click.argument('name')
def greeting(name):
    click.echo("Hello, {}".format(name))
  
if __name__=="__main__":
    greeting()

>>>python greet.py Gifoyle

Hello, Gilfoyle

 
Argumentos opcionales: Click da la opción de incluir parámetros opcionales en forma de banderas.

import click
  
@click.command()
@click.option('--string', default ='World',
        help ='This is a greeting')
def hello(string):
    click.echo("Hello, {}".format(string))
  
if __name__=="__main__":
hello()    

>>>python hello.py

Hello, World

>>>python hello.py --string Dinesh

Hello, Dinesh

 
Ayuda: el paso más importante y final para crear la CLI perfecta es proporcionar documentación a nuestro código. Click proporciona un texto de ayuda agradable y formateado en la línea de comando cuando se usa el argumento opcional --help. Utiliza la string de documentación especificada en la función.

import click
  
@click.command()
@click.argument(‘greeting’)
def cli(greeting):
    '''
    This is the default CLI method.
      
    Arguments:
            greeting: {string}
    '''
  
    click.echo(greeting)
    click.echo ("This is a simple cli.")
  
if __name__=="__main":
    cli()

>>> python cli.py --help
Este es el método CLI predeterminado.

    
Arguments:
greeting: {string}

Options:
  --string TEXT  Hello
  --help         Show this message and exit.
>>>

 
Manejo de errores: el manejo de errores es una parte importante de una CLI. La forma en que su secuencia de comandos maneja y administra los errores es muy importante y también ayuda al usuario a comprender mejor el error.

>>> python cli.py
Este es un cli simple.

>>>python cli.py hello

Usage: greet.py [OPTIONS]
Try "greet.py --help" for help.

Error: Got unexpected extra argument (hello)

Publicación traducida automáticamente

Artículo escrito por abhishektiwari3507 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *