argparse模块: 处理命令行参数 \ sys.argv[]
命令行参数
位置参数: ls root/
选项参数(已经提前定义好的参数,不能随意指定):ls -l
steps
- 导入模块
import argparse
- 创建一个解析对象
parser = argparse.ArgumentParser()
- 向对象中添加命令行参数和选项
parser.add_argument()
- 进行解析
parser.parse_args() \ parse.parse_args(sys.argv[1:]) \ parse.parse_known_args() # parse_args()从指定的选项中返回一些数据,输出为**namespace空间**;parse_known_args()函数在接受到多余的命令行参数时不报错,返回一个tuple类型的命名空间和一个保存着余下的命令行字符的list。
argparse.ArgumentParser()
prog=None - 文件名,默认为sys.argv[0],用来在help信息中描述程序的名称。
description=None, - help时显示的开始文字
epilog=None, - help时显示的结尾文字
parents=[], -若与其他参数的一些内容一样,可以继承
formatter_class=argparse.HelpFormatter, - 自定义帮助信息的格式
prefix_chars=’-’, - 命令的前缀,默认是‘-’
fromfile_prefix_chars=None, - 命令行参数从文件中读取
argument_default=None, - 设置一个全局的选项缺省值,一般每个选项单独设置
conflict_handler=‘error’, - 定义两个add_argument中添加的选项名字发生冲突时怎么处理,默认处理是抛出异常
add_help=True - 是否增加-h/–help选项,默认是True)
# description:help时显示的开始文字 python argparse_python.py -h/--help
parser = argparse.ArgumentParser(description = 'this is a description')
parser.add_argument('--ver', '-v', action = 'store_true', help = 'hahaha')
# 将变量以标签-值的字典形式存入args字典
ArgumentParser.add_argument(name or flags…[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest]) 方法
- name or flags - 参数有两种,可选参数和位置参数。
- action - 命令行遇到指定参数时的动作,默认值是 store。
- store_const,表示赋值为const;
- append,将遇到的值存储成列表,也就是如果参数重复则会保存多个值;
- append_const,将参数规范中定义的一个值保存到一个列表;
- count,存储遇到的次数;此外,也可以继承 argparse.Action 自定义参数解析;
nargs - 参数个数,可以是具体的数字,或者是?号,当不指定值时对于 Positional argument 使用 default,对于Optional argument 使用 const;或者是 * 号,表示 0 或多个参数;或者是 + 号表示 1 或多个参数。
- const - action 和 nargs 所需要的常量值。
- default - 不指定参数时的默认值、给可选参数添加默认值。
- type - 参数类型、类型转换。
- choices - 参数可允许的值的一个容器。设置参数值的范围,如果choices中的类型不是字符串,记得指定type;表示该参数能接受的值只能来自某几个值候选值中,除此之外会报错,用choice参数即可。
- required - 该选项(可选参数)是否必选,默认为True。
- help - 参数的帮助提示,当指定为 argparse.SUPPRESS 时表示不显示该参数的帮助信息.
- metavar - 在 usage 说明中的参数名称,对于必选参数默认就是参数名称,对于可选参数默认是全大写的参数名称.
- dest - 解析后的参数名称(选项的value解析出来后放到哪个属性中),默认情况下,对于可选参数选取最长的名称,中划线转换为下划线.
定位参数
# python argparse_usage.py 9
parser.add_argument("square", help="display a square of a given number", type=int)
print(args.square**2)
可选参数:命令行参数是可选的
短参数:用-加上一个字母来指定,如-e
长参数:用–加上一个字符串来指定,如–example
此外,使用命令时可选参数(长or短)若没有对应参数值会报错,这时可以添加参数action="store_true"来让程序认为该参数已出现,从而避免无参数值报错。
# python argparse_usage.py --square 8
parser.add_argument("--square", help="display a square of a given number", type=int)
print(args.square**2)
定位参数与可选参数混用
查看帮助信息:-h --help
运行命令时使用-h参数可以查看关于该命令的帮助信息,如果想要在帮助信息中更为详细地描述某个参数,add_argument()函数的help参数便派上用场。