multiple - Python-Diferencia entre docopt y argparse
python flags example (3)
Tengo que escribir una interfaz de línea de comandos y he visto que puedo usar docopt
y argparse
.
Me gustaría saber cuáles son las principales diferencias entre los dos para poder hacer una elección iluminada.
Por favor apégate a los hechos. No quiero wow docopt. Tan hermosa. Muy útil.
Docopt analiza una cadena de documentos, mientras que argparse construye su análisis creando una instancia de objeto y agregándole un comportamiento mediante llamadas a funciones.
Ejemplo para argparse:
parser = argparse.ArgumentParser()
parser.add_argument("operation", help="mathematical operation that will be performed",
choices=[''add'', ''subtract'', ''multiply'', ''divide''])
parser.add_argument("num1", help="the first number", type=int)
parser.add_argument("num2", help="the second number", type=int)
args = parser.parse_args()
Ejemplo para docopt:
"""Calculator using docopt
Usage:
calc_docopt.py <operation> <num1> <num2>
calc_docopt.py (-h | --help)
Arguments:
<operation> Math Operation
<num1> First Number
<num2> Second Number
Options:
-h, --help Show this screen.
"""
from docopt import docopt
if __name__ == ''__main__'':
arguments = docopt(__doc__, version=''Calculator with docopt'')
print(arguments)
Tenga en cuenta que docopt utiliza las secciones Usage:
y Options:
para analizar. Aquí Arguments:
se proporciona solo para la conveniencia del usuario final.
La página de por qué hacer clic:
tiene una buena comparación entre argparse, docopt y haga clic en sí mismo.
Click
es otra utilidad de análisis de línea de comandos para Python.
argparse
encuentra en la biblioteca predeterminada de Python, por lo que esto no agrega ninguna dependencia adicional a su programa. Las diferencias son principalmente la forma de escribir su código. Usando argparse
es posible agregar argparse
para complementos para que puedan agregar sus propios argumentos a su programa. Por ejemplo, flake8 usa esto.
docopt
es un módulo de terceros que proporciona una forma sencilla de analizar los argumentos. Personalmente me gusta docopt
debido a su simplicidad, pero no estoy diciendo que sea el mejor para usar en todos los casos. En su documentación mencionan que al usar docopt
es posible usar más combinaciones de pases de argumentos que cuando se usa argparse
.