官方文档:https://docs.python.org/3.7/library/argparse.html#the-parse-args-method
argparse模块可以让用户轻松编写命令行界面。 该程序定义了它需要的参数,argparse将指出如何解析sys.argv(一个传递给Python脚本的命令行列表)中的参数。 当用户给程序提供无效参数时,argparse模块还会自动生成帮助和使用消息并发出错误。
argparse模块中所定义的最主要的类就是 argparse.ArgumentParser。其定义以及主要参数的解释如下:
class ArgumentParser(prog=None, usage=None, description=None, epilog=None, parents=[],
formatter_class=argparse.HelpFormatter, prefix_chars='-',
fromfile_prefix_chars=None, argument_default=None,
conflict_handler='error', add_help=True, allow_abbrev=True)
假设Test.py的内容如下:
import argparse
parser = argparse.ArgumentParser(prog='APro',
usage='This part will tell you how to use the module.',
description='This is a ArgumentParser object.')
parser.parse_args()
其中parser为类ArgumentParser所实例化的对象,先将cmd的执行目录放在Test.py所在的路径下,然后输入python Test.py --help可以得到以下结果:
在该类中拥有两个重要的函数add_argument()和parse_args(),用来增加parser对象中的参数和返回一个有属性值得命名空间。
首先看看add_argument()的参数以及参数的含义:
add_argument(name or flags...[, action]
[, nargs][, const][, default]
[, type][, choices][, required]
[, help][, metavar][, dest])
add_argument()的参数有两种,一种是位置参数,add_argument('echo', help='this is a positional argment') 位置参数一次只能添加一个,在用命令行运行时必须要赋值。另一种是 可选参数,add_argument(['--f','--foo']) 可选参数前面需要加'--',使用时可以选择是否赋值。
action可以继承argparse.Action定制自己的action,下面是的几个常用的参数:
- 'store' - 只是保存参数的值。这是默认的动作。
- 'store_const' - 保存由const关键字参数指出的值。(注意const关键字参数默认是几乎没有帮助的None。)'store_const'动作最常用于指定某种标记的可选参数。
- 'store_true'和'store_false' - 它们是'store_const' 的特殊情形,分别用于保存值True和False。另外,它们分别会创建默认值False 和True。
- 'append' - 保存一个列表,并将每个参数值附加在列表的后面。这对于允许指定多次的选项很有帮助。
- 'append_const' - 保存一个列表,并将const关键字参数指出的值附加在列表的后面。(注意const关键字参数默认是None。)'append_const' 动作在多个参数需要保存常量到相同的列表时特别有用。
- 'count' - 计算关键字参数出现的次数。
parse_args()的参数和含义:
parse_args(args=None, namespace=None)
该函数将参数字符串传递给对象,并将他们指派给相应的命名空间,Python通过该命名空间来识别创建的对象。
args = parser.parse_args()
parser.parse_args(namespace='args')
以上两句代码所表达的含义相同,都是给所创建对象的命名空间命名为args。
import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers (default: find the max)')
args = parser.parse_args()
print(args.accumulate(args.integers))
假设以上代码保存在prog.py的文件中,我们用命令行运行:python prog.py -h,可以的到一下结果
usage: prog.py [-h] [--sum] N [N ...] Process some integers. positional arguments: N an integer for the accumulator optional arguments: -h, --help show this help message and exit --sum sum the integers (default: find the max)
添加适当的参数在运行会得到其和或者最大值。
$ python prog.py 1 2 3 4 4 $ python prog.py 1 2 3 4 --sum 10