parseargs parse multiple metavar example cli argumentparser python command-line-arguments argparse docopt

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:

http://click.pocoo.org/5/why/

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 .