Argparse VS Docopt VS Click: comparación de bibliotecas de análisis de línea de comandos de Python

Antes de conocer las bibliotecas de análisis de Python, debemos tener conocimientos previos sobre la interfaz de usuario de línea de comandos. Una interfaz de línea de comandos (CLI) proporciona una interfaz fácil de usar para los programas de línea de comandos, que es la más favorecida por los desarrolladores o programadores que prefieren la programación con teclado, en lugar de usar el mouse. Al construir interfaces de línea de comandos, el usuario puede interactuar a través de las consolas, shells o terminales de manera más eficiente.

Hay muchas bibliotecas de Python para crear aplicaciones de línea de comandos como Argparse , Docopt , Click , Client y muchas más. Ahora, háganos saber más sobre las bibliotecas de Python de uso frecuente: Argparse, Docopt y Click.

Argparse

Argparse es una interfaz de línea de comandos fácil de usar. El módulo argparse analiza los argumentos y opciones/indicadores de la línea de comandos.

Instalación:

Hay muchas formas de instalar el módulo argparse, la forma más fácil es usando pip

$ pip install argparse

Inicializar Argparse

import argparse
parser=argparse.ArgumentParser(description="Program description")

Agregar argumentos posicionales/opcionales: Usando add_argument() podemos agregar parámetros posicionales/opcionales al analizador.
 

parser.add_argument(‘-parameterName’, ‘–opcionalName’, help=”mensaje”)

Aquí, -parameterName es una notación abreviada. 
–opcionalName es el parámetro opcional. 
-h –help supervisa la ayuda.

Uso de la línea de comandos

$ python [file].py [command] [options] name

Ejemplo: 

Python3

# argparse_example.py
 
import argparse
 
if __name__=='__main__':
     
    #Initialize
    parser=argparse.ArgumentParser(description="Simple calculator")
     
    #Adding optional parameters
    parser.add_argument('-n1',
                        '--num1',
                        help="Number 1",
                        type=float)
 
    parser.add_argument('-n2',
                        '--num2',
                        help="Number 2",
                        type=float)
 
    parser.add_argument('-op',
                        '--operation',
                        help="operator",
                        default="*")
     
    #Parsing the argument
    args=parser.parse_args()
    print(args)
 
    #Initialize result to None
    result =None
 
    #Simple calculator operations
    if args.operation == '+':
        result=args.num1+args.num2
 
    if args.operation == '-':
        result=args.num1-args.num2
 
    if args.operation == '/':
        result=args.num1/args.num2
 
    if args.operation == '*':
        result=args.num1*args.num2
 
    if args.operation == 'pow':
        result=pow(args.num1,args.num2)
     
    #Print the result  
    print("Result = " ,result)

Producción:
 

Docopt

Docopt crea una interfaz de línea de comandos para la aplicación de línea de comandos, genera automáticamente un analizador para ella. La idea principal de docopt es describir la interfaz literalmente con texto, como en docstring
 

Instalación:

Para instalar este módulo, escriba el siguiente comando en la terminal. 

$pip install docopt 

Se usa más comúnmente para mostrar los mensajes de ayuda y se invoca con la opción -h o -help. docopt le brinda un fuerte control sobre su página de ayuda y consiste en la palabra clave de uso , que no distingue entre mayúsculas y minúsculas , seguida del nombre del programa. Un patrón de uso simple es el siguiente: 

Usage : my_program command --option  

Ejemplo:  

Python3

#docopt_example.py
 
#usage pattern
usage='''
 
Usage:
  docopt_example.py command --option <argument>
  docopt_example.py <argument> <repeating-argument>
  docopt_example.py --version
 
Options:
  -h, --help     Display help
  -o, --option   Display options
  -l, --all      List all
  -q, --quit     exit
  --version      Version 3.6.1
       
'''
 
#Initialization  
from docopt import docopt
 
args=docopt(usage)
print(args)

Producción:

Hacer clic

Click es un kit de creación de interfaz de línea de comandos, ayuda en el anidamiento arbitrario de comandos, la generación automática de páginas de ayuda, admite la carga diferida de subcomandos en tiempo de ejecución. Su objetivo es hacer que el proceso de escribir herramientas de línea de comandos sea rápido y divertido, al mismo tiempo que evita cualquier frustración causada por la incapacidad de implementar una API CLI prevista . Viene con ayudantes comunes útiles (obtención de dimensiones de terminal, colores ANSI, obtención de entrada de teclado directa, limpieza de pantalla, búsqueda de rutas de configuración, lanzamiento de aplicaciones y editores, etc.)
 

Instalación:

Para instalar este módulo, escriba el siguiente comando en la terminal.

$pip install click

Ejemplo: 

Python3

# click_example.py
 
import click
 
# initialize result to 0
result=0
 
@click.command()
@click.option('--num1',
              default=1,
              help='Enter a float value',
              type=float)
 
@click.option('--num2',
              default=1,
              help='Enter a float value',
              type=float)
 
@click.option('--op',
              default='+',
              help='Enter the operator')
 
# Calculator function
def calculator(num1,num2,op):
    if op=='+':
        result=num1+num2
    if op=='*':
        result=num1*num2
    if op=='-':
        result=num1-num2
    if op=='/':
        result=num1/num2
 
    # print the result   
    click.echo("Result is %f" %result)
 
if __name__ =='__main__':
    calculator()

Producción:

Conclusión

Después de ver las implementaciones de la biblioteca anterior, podemos concluir que: 
 

  • Argparse: es una biblioteca estándar (incluida con Python) y muy simple de usar debido al trabajo que ocurre detrás de escena. Por ejemplo, esta biblioteca puede diferenciar entre los argumentos y las opciones que se definen usando el método add_arguments() automáticamente.
     
  • Docopt: esta biblioteca se utiliza para escribir documentación. Además, esta biblioteca se usa en varios idiomas, es decir, puede aprender esta biblioteca y usarla en varios idiomas.
     
  • Haga clic: esta biblioteca proporciona la implementación del estilo decorador, que es muy útil ya que puede decorar la función que desea usar. Esto también hace que la lectura del código sea muy fácil. 
     

Publicación traducida automáticamente

Artículo escrito por soniyanagaraj30 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 *