我必须编写一个命令行界面,我已经看到我可以使用docopt
和。Python - docopt和argparse之间的区别
我想知道两者之间的主要区别是什么,以便我可以做出明智的选择。
请坚持事实。我不想哇。 docopt。如此美丽。很有用。
我必须编写一个命令行界面,我已经看到我可以使用docopt
和。Python - docopt和argparse之间的区别
我想知道两者之间的主要区别是什么,以便我可以做出明智的选择。
请坚持事实。我不想哇。 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:
以方便最终用户。
经过一年的使用后,我认为值得一提的是,由于docopt是最近的,而不是Python的核心的一部分,它可能不适用于较旧的系统。即不在Debian Wheezy上(但在Jessie上)。 – baldurmen
位于python默认库中,所以这不会为您的程序添加任何额外的依赖项。差异主要在于编写代码的方式。使用可以为插件添加钩子,以便他们可以将自己的argumnets添加到您的程序中。例如flake8使用这个。
docopt
是第三方模块提供了一种简单的解析参数的方法。我个人喜欢docopt
,因为它的简单性,但我并不是说它是最好的在所有情况下使用。在他们的文档中他们提到使用docopt
可以使用更多的自变量传递组合,这比使用时更多。
'argparse'在默认的Python包中,而'docopt'是一个单独的模块。 – 2013-12-15 20:42:24