argparse模块的作用
1. 介绍
-
python官方推介的命令行解析
-
优点
- 将参数和代码分离出来,提高代码可读性
- 自动生成文档
-
初始化对象的参数
""" @prog: 程序名字,如果没有传则就默认是文件的名字 @description: 对这个文件的文件的描述 @epilog - 在参数帮助文档之后显示的文本(默认值:无) !!!(在-h|-help的时候才会显示) @parents - 一个 ArgumentParser 对象的列表,它们的参数也应包含在内 @formatter_class - 用于自定义帮助文档输出格式的类 @prefix_chars - 可选参数的前缀字符集合(默认值:'-') @fromfile_prefix_chars - 当需要从文件中读取其他参数时,用于标识文件名的前缀字符集合(默认值:None) @argument_default - 参数的全局默认值(默认值: None) @conflict_handler - 解决冲突选项的策略(通常是不必要的) @add_help - 为解析器添加一个 -h/--help 选项(默认值: True) @allow_abbrev - 如果缩写是无歧义的,则允许缩写长选项 (默认值:True) @exit_on_error - 决定当错误发生时是否让 ArgumentParser 附带错误信息退出。 (默认值: True) """
argument = ArgumentParser(prog='study_argumentParse', description="This is %(prog)s desc", usage='%(prog)s [options]',epilog="I am is emilog", formatter_class=HelpFormatter, parents=[test1], fromfile_prefix_chars="@")
基本的配置
设置了fromfile_prefix_chars的启动方法
如果fromfile_prefix_chars的值为@在启动的时候,就是python xxx.py @文件名字
-
add_argument的参数配置
""" @name or flags - 一个命名或者一个选项字符串的列表,例如 foo 或 -f, --foo。 @action - 当参数在命令行中出现时使用的动作基本类型。 用法: 1. store_const: 定义一个常量,需要配置const使用 2. store_true,store_false: 这个值是true或者是false 当我们的命令行里面有这个值就是true,没有就是false,当使用他的时候 就不能使用type进行指定数据类型了 3. append 相当于list中的append 4. append_const 和append一样,不过他必须配合const使用 5. count 统计出现的次数 6. version 需要配合version一起使用,然后会输出version的值 @nargs - 命令行参数应当消耗的数目。 用法: 1. n:(一个整数) 这个参数的值最多可以放n个 2. ?:() 会生成一个字典,多被用来可选的输入或输出文件 https://docs.python.org/zh-cn/3/library/argparse.html#action 3. *:() 和?放在一个字典里面,会将后面的值放在列表里面,相当于**kwargs 4. +:() 和*一样的用法,唯一的区别就是。+是必须传入参数的,而*是不需要必须传入的 @const - 被一些 action 和 nargs 选择所需求的常数。 @default - 当参数未在命令行中出现并且也不存在于命名空间对象时所产生的值。 @type - 命令行参数应当被转换成的类型。 @choices - 可用的参数的容器。 用法: 1. 是一个列表,在使用命令行参数的时候,只能从列表里面选择一个。 @required - 此命令行选项是否可省略 (仅选项可用)。 @help - 一个此选项作用的简单描述。 @metavar - 在使用方法消息中使用的参数值示例。 @dest - 被添加到 parse_args() 所返回对象上的属性名。 """
2. 参数的设置
from argparse import ArgumentParser, HelpFormatter
argument = ArgumentParser(prog='study_argumentParse', description="This is %(prog)s desc", usage='%(prog)s [options]', epilog="I am is emilog", formatter_class=HelpFormatter, parents=[test1],fromfile_prefix_chars="@")
# 添加一个位置参数
# argument.add_argument('settings', help='%(prog)s Programer settings', type=int)
# 添加一个关键字参数,并进行action配置
argument.add_argument('-store_const', help='%(prog)s store_const', action="store_const", const=1)
argument.add_argument('-store_append', help='%(prog)s store_append', action='append')
argument.add_argument('-store_appendconst', help='%(prog)s store_appendconst', action='append_const', const='aaa')
argument.add_argument('-count', help='%(prog)s count', action='count')
argument.add_argument('-V', '--version', action='version', version='%(prog)s 2.0')
# nargs的配置
argument.add_argument('-nargs_n', nargs=1)
argument.add_argument('-nargs_?', nargs="?")
argument.add_argument('-nargs_*', nargs="*")
argument.add_argument('-nargs_+', nargs="+")
# choices配置
argument.add_argument('-choise', choices=['rock', 'nick'])
# required配置
argument.add_argument('-required', required=False)
# metavar配置
argument.add_argument('-metavar', metavar='YYY')
# dest
argument.add_argument('-dest', dest='aaa')
def main():
print('我启动了')
if __name__ == '__main__':
main()
3. 添加一个位置参数
-
添加位置参数
from argparse import ArgumentParser # 引入ArgumentParser这个类 argument = ArgumentParser() # 创建一个对象 # 添加一个位置参数 """ 位置参数:@直接写参数名字就是位置参数 """ argument.add_argument('settings') # 解析参数并将我们在命令行的参数给返回来 params = argument.parse_args() """ 接收从命令行里面传来的参数 """ params.settings # 我们在命令行里面传来的参数 !!!setting和argument.add_argument('settings')这里面传入的值对应
-
给参数添加一个文档
from argparse import ArgumentParser # 引入ArgumentParser这个类 argument = ArgumentParser() # 创建一个对象 # 添加一个位置参数 """ 第一个参数是:参数名 help:表示对这个参数的解释,文档 """ argument.add_argument('settings', help='Programer settings') # 解析参数并将我们在命令行的参数给返回来 argument.parse_args()
-
指定数据类型
from argparse import ArgumentParser # 引入ArgumentParser这个类 argument = ArgumentParser() # 创建一个对象 argument = ArgumentParser() # 添加一个位置参数 """ 第一个参数是:参数名 help:表示对这个参数的解释,文档 type: 表示参数是整形,如果不使用type指定数据类型,则就是字符串 """ argument.add_argument('settings', help='Programer settings', type=int) # 解析参数并将我们在命令行的参数给返回来 argument.parse_args()
4. 添加一个可选参数
-
添加一个可选参数
from argparse import ArgumentParser # 引入ArgumentParser这个类 argument = ArgumentParser() # 创建一个对象 argument.add_argument('--verbosity', help='I am is change params') # 解析参数并将我们在命令行的参数给返回来 argument.parse_args()
5. 全部代码
from argparse import ArgumentParser, HelpFormatter
# 当使用parents的时候,需要把add_help变成false,不需要打开parents
test1 = ArgumentParser(add_help=False)
test1.add_argument('-test1', '--test1', help="I am is test1")
# 用来参数命令行进行解析
# 将参数和代码解析出来,提高代码的可读性
# 会自动生产文档
"""
@prog: 程序名字,如果没有传则就默认是文件的名字
@description: 对这个文件的文件的描述
@epilog - 在参数帮助文档之后显示的文本(默认值:无) !!!(在-h|-help的时候才会显示)
@parents - 一个 ArgumentParser 对象的列表,它们的参数也应包含在内
@formatter_class - 用于自定义帮助文档输出格式的类
@prefix_chars - 可选参数的前缀字符集合(默认值:'-')
@fromfile_prefix_chars - 当需要从文件中读取其他参数时,用于标识文件名的前缀字符集合(默认值:None)
@argument_default - 参数的全局默认值(默认值: None)
@conflict_handler - 解决冲突选项的策略(通常是不必要的)
@add_help - 为解析器添加一个 -h/--help 选项(默认值: True)
@allow_abbrev - 如果缩写是无歧义的,则允许缩写长选项 (默认值:True)
@exit_on_error - 决定当错误发生时是否让 ArgumentParser 附带错误信息退出。 (默认值: True)
"""
argument = ArgumentParser(prog='study_argumentParse', description="This is %(prog)s desc", usage='%(prog)s [options]',
epilog="I am is emilog", formatter_class=HelpFormatter, parents=[test1],
fromfile_prefix_chars="@")
# ---------------------------位置参数------------------------------------
# 添加一个位置参数,并增加对参数的解释,,指定为整形
# 如果不指定type=int则就表示是字符串
"""
@name or flags - 一个命名或者一个选项字符串的列表,例如 foo 或 -f, --foo。
@action - 当参数在命令行中出现时使用的动作基本类型。
用法:
1. store_const: 定义一个常量,需要配置const使用
2. store_true,store_false: 这个值是true或者是false 当我们的命令行里面有这个值就是true,没有就是false,当使用他的时候
就不能使用type进行指定数据类型了
3. append 相当于list中的append
4. append_const 和append一样,不过他必须配合const使用
5. count 统计出现的次数
6. version 需要配合version一起使用,然后会输出version的值
@nargs - 命令行参数应当消耗的数目。
用法:
1. n:(一个整数) 这个参数的值最多可以放n个
2. ?:() 会生成一个字典,多被用来可选的输入或输出文件 https://docs.python.org/zh-cn/3/library/argparse.html#action
3. *:() 和?放在一个字典里面,会将后面的值放在列表里面,相当于**kwargs
4. +:() 和*一样的用法,唯一的区别就是。+是必须传入参数的,而*是不需要必须传入的
@const - 被一些 action 和 nargs 选择所需求的常数。
@default - 当参数未在命令行中出现并且也不存在于命名空间对象时所产生的值。
@type - 命令行参数应当被转换成的类型。
@choices - 可用的参数的容器。
用法:
1. 是一个列表,在使用命令行参数的时候,只能从列表里面选择一个。
@required - 此命令行选项是否可省略 (仅选项可用)。
@help - 一个此选项作用的简单描述。
@metavar - 在使用方法消息中使用的参数值示例。
@dest - 被添加到 parse_args() 所返回对象上的属性名。
"""
# 添加一个位置参数
# argument.add_argument('settings', help='%(prog)s Programer settings', type=int)
# 添加一个关键字参数,并进行action配置
argument.add_argument('-store_const', help='%(prog)s store_const', action="store_const", const=1)
argument.add_argument('-store_append', help='%(prog)s store_append', action='append')
argument.add_argument('-store_appendconst', help='%(prog)s store_appendconst', action='append_const', const='aaa')
argument.add_argument('-count', help='%(prog)s count', action='count')
argument.add_argument('-V', '--version', action='version', version='%(prog)s 2.0')
# nargs的配置
argument.add_argument('-nargs_n', nargs=1)
argument.add_argument('-nargs_?', nargs="?")
argument.add_argument('-nargs_*', nargs="*")
argument.add_argument('-nargs_+', nargs="+")
# choices配置
argument.add_argument('-choise', choices=['rock', 'nick'])
# required配置
argument.add_argument('-required', required=False)
# metavar配置
argument.add_argument('-metavar', metavar='YYY')
# dest
argument.add_argument('-dest', dest='aaa')
# ----------------------------可选参数-----------------------------------
# 如果可选参数没有被使用,则默认值就是None
# 当我们使用action的时候,在初始化这个类的时候,就不能使用type这个属性了
argument.add_argument('-v', '--verbosity', help='I am is change params', action='store_false')
# 解析参数
params = argument.parse_args()
print(params)
def main():
print('我启动了')
if __name__ == '__main__':
main()