Argparse VS Docopt VS Click – 比较Python命令行解析库
在了解Python解析库之前,我们必须先了解命令行用户界面。命令行界面(CLI)为命令行程序提供了一个用户友好的界面,这是开发人员或喜欢键盘编程而不是使用鼠标的程序员最喜欢的。通过构建命令行界面,用户可以更有效地通过控制台、shell 或终端进行交互。
有很多Python库可以构建命令行应用程序,例如Argparse 、 Docopt 、 Click 、 Client等等。现在,让我们更多地了解常用的Python库——Argparse、Docopt 和 Click。
解析
Argparse 是一个用户友好的命令行界面。 argparse模块解析命令行参数和选项/标志。
安装:
安装 argparse 模块的方法有很多,最简单的方法是使用pip
$ pip install argparse
初始化 Argparse
import argparse
parser=argparse.ArgumentParser(description="Program description")
添加位置/可选参数:使用add_argument()我们可以向解析器添加位置/可选参数。
parser.add_argument(‘-parameterName’,’–optionalName’,help=”message”)
在这里, -parameterName是一个简写符号。
--optionalName是可选参数。
-h –help监控帮助。
命令行用法
$ python [file].py [command] [options] name
例子:
Python3
# argparse_example.py
import argparse
if __name__=='__main__':
#Initialize
parser=argparse.ArgumentParser(description="Simple calculator")
#Adding optional parameters
parser.add_argument('-n1',
'--num1',
help="Number 1",
type=float)
parser.add_argument('-n2',
'--num2',
help="Number 2",
type=float)
parser.add_argument('-op',
'--operation',
help="operator",
default="*")
#Parsing the argument
args=parser.parse_args()
print(args)
#Initialize result to None
result =None
#Simple calculator operations
if args.operation == '+':
result=args.num1+args.num2
if args.operation == '-':
result=args.num1-args.num2
if args.operation == '/':
result=args.num1/args.num2
if args.operation == '*':
result=args.num1*args.num2
if args.operation == 'pow':
result=pow(args.num1,args.num2)
#Print the result
print("Result = " ,result)
Python3
#docopt_example.py
#usage pattern
usage='''
Usage:
docopt_example.py command --option
docopt_example.py
docopt_example.py --version
Options:
-h, --help Display help
-o, --option Display options
-l, --all List all
-q, --quit exit
--version Version 3.6.1
'''
#Initialization
from docopt import docopt
args=docopt(usage)
print(args)
Python3
# click_example.py
import click
# initialize result to 0
result=0
@click.command()
@click.option('--num1',
default=1,
help='Enter a float value',
type=float)
@click.option('--num2',
default=1,
help='Enter a float value',
type=float)
@click.option('--op',
default='+',
help='Enter the operator')
# Calculator function
def calculator(num1,num2,op):
if op=='+':
result=num1+num2
if op=='*':
result=num1*num2
if op=='-':
result=num1-num2
if op=='/':
result=num1/num2
# print the result
click.echo("Result is %f" %result)
if __name__ =='__main__':
calculator()
输出:
多科普
Docopt 为命令行应用程序创建命令行界面,它会自动为它生成一个解析器。 docopt的主要思想是用文本从字面上描述界面,如docstring 。
安装:
要安装此模块,请在终端中键入以下命令。
$pip install docopt
它最常用于显示帮助消息,并使用 -h 或 –help 选项调用。 docopt使您可以对帮助页面进行强大的控制,它包含不区分大小写的用法关键字,后跟程序名称。一个简单的使用模式如下:
Usage : my_program command --option
例子:
Python3
#docopt_example.py
#usage pattern
usage='''
Usage:
docopt_example.py command --option
docopt_example.py
docopt_example.py --version
Options:
-h, --help Display help
-o, --option Display options
-l, --all List all
-q, --quit exit
--version Version 3.6.1
'''
#Initialization
from docopt import docopt
args=docopt(usage)
print(args)
输出:
点击
Click 是一个命令行界面创建工具包,它有助于命令的任意嵌套,自动帮助页面生成,支持在运行时延迟加载子命令。它旨在使编写命令行工具的过程变得快速而有趣,同时还防止因无法实现预期的CLI API而导致的任何挫败感。它带有有用的常用助手(获取终端尺寸、ANSI 颜色、获取直接键盘输入、屏幕清除、查找配置路径、启动应用程序和编辑器等)
安装:
要安装此模块,请在终端中键入以下命令。
$pip install click
例子:
Python3
# click_example.py
import click
# initialize result to 0
result=0
@click.command()
@click.option('--num1',
default=1,
help='Enter a float value',
type=float)
@click.option('--num2',
default=1,
help='Enter a float value',
type=float)
@click.option('--op',
default='+',
help='Enter the operator')
# Calculator function
def calculator(num1,num2,op):
if op=='+':
result=num1+num2
if op=='*':
result=num1*num2
if op=='-':
result=num1-num2
if op=='/':
result=num1/num2
# print the result
click.echo("Result is %f" %result)
if __name__ =='__main__':
calculator()
输出:
结论
在看到上述库的实现后,我们可以得出结论:
- Argparse:它是一个标准库(包含在Python中)并且由于在幕后发生的工作而非常易于使用。例如,这个库可以区分使用 add_arguments() 方法自动定义的参数和选项。
- Docopt:这个库用于编写文档。此外,该库以多种语言使用,即您可以学习该库并以多种语言使用它。
- Click:这个库提供了装饰器风格的实现,非常有用,因为你可以装饰你想要使用的函数。这也使得代码的阅读变得非常容易。