Python-docopt和argparse之间的区别



我必须编写一个命令行界面,我已经看到我可以使用docoptargparse

我想知道两者之间的主要区别是什么,这样我就可以做出明智的选择。

请坚持事实。我不想要哇。docopt。太美了。非常有用

Docopt解析文档字符串,而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:只是为了方便最终用户。

点击原因页面:

https://click.palletsprojects.com/en/7.x/why/

argparse、docopt和click本身之间有一个很好的比较。

Click是Python的另一个命令行解析实用程序。

argparse在python默认库中,因此不会给程序添加任何额外的依赖项。不同之处主要在于编写代码的方式。使用argparse,可以为插件添加钩子,这样他们就可以将自己的arguments添加到程序中。例如flake8就使用了这个。

docopt是一个第三方模块,提供了一种解析参数的简单方法。我个人喜欢docopt是因为它很简单,但我并不是说它在所有情况下都是最好的。在他们的文档中,他们提到使用docopt可以使用比使用argparse更多的参数传递组合。

相关内容

  • 没有找到相关文章

最新更新