Docopt анализирует строку doc, в то время как argparse строит свой синтаксический анализ, создавая экземпляр объекта и добавляя к нему поведение посредством вызовов функций.
Пример 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()
Пример 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)
Примечание, что docopt использует Usage:
и Options:
секции для синтаксического анализа. Здесь Arguments:
предоставляется только для удобства конечного пользователя.
'argparse' находится в пакете Python по умолчанию, тогда как' docopt' является отдельным модулем. –