python argparse 参数使用详解记录
1.argparse是什么,有什么用?
argparse
是 Python 标准库中用于解析命令行参数和选项的模块,可以轻松地编写用户友好的命令行,进行参数解析。我理解经常作为程序sh脚本,或者接口参数缓存的入口。
2.基本步骤
- 创建解析器:
argparse.ArgumentParser()
创建一个解析器对象
定义程序可以接受的命令行参数,并设置参数的名称、类型、默认值和帮助信息
- 添加参数:
add_argument()
向解析器中添加参数
如参数名称、缩写、类型、默认值、帮助信息
- 解析参数:
parse_args()
解析命令行参数,包含了解析后的参数及其对应的值
ArgumentParser ()函数参数说明:
-------------------------------------------------------------------------------------------------------------------
# 函数功能:创建一个命令行参数解析器对象。
argparse.ArgumentParser([prog=None, usage=None, description=None, epilog=None,
formatter_class=argparse.HelpFormatter, prefix_chars='-', fromfile_prefix_chars=None, argument_default=None, conflict_handler='error', add_help=True, allow_abbrev=True
])
# 参数说明:- prog: 程序的名称
- usage: 用法说明
- description: 描述参数作用的文字
- epilog: 描述参数作用的结尾文字- formatter_class: 自定义帮助信息输出格式
- prefix_chars: 用于标识可选参数的前缀字符
- fromfile_prefix_chars: 用于从文件中读取参数的前缀字符
- argument_default: 参数的默认值
- conflict_handler: 解决参数冲突的方式
- add_help: 是否自动添加'-h'和'--help'选项来显示帮助信息
- allow_abbrev: 是否允许参数缩写
import argparse
# 创建一个解析器对象,description 参数用于提供程序的简要描述
parser = argparse.ArgumentParser(description='这是一个argparse 示例,我是描述信息')
# 添加参数,位置参数 name 和 age,help 参数用于提供参数的帮助信息,type 参数指定了参数的类型
parser.add_argument('name', help='你的姓名')
parser.add_argument('age', type=int, help='你的年龄')
# 解析命令行参数,将结果存储在 args 对象中
args = parser.parse_args()
# 打印参数
print(f"你好,{args.name},你今年 {args.age} 岁了。")
3.可选参数:
add_argument() 函数参数说明
----------------------------------------------------------------------------------------------------------------------
函数功能:向命令行参数解析器中添加命令行参数。
parser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
# 参数说明:
- name or flags: 命令行参数的名称或标志,可以是一个字符串或一个包含多个字符串的列表。例如 foo 或 -f, --foo。
(1)位置参数: 直接输入一个字符串,代表位置参数,是必传值。
(2)命令标志: 在字符串前加一个短横线(-),在命令中表示该参数。
(3)可选参数: 在字符串前加两个短横线(--),在命令行中代表可选参数,可输入也可不输入。- action: 指定命令行参数的动作,默认为'store'。将命令行参数值存储到相应的参数名中。
(1)'store':存储参数值。
(2)'store_const':存储常量值。
(3)'store_true':存储True值。
(4)'store_false':存储False值。
(5)'append':将参数值添加到列表中。
(6)'append_const':将常量值添加到列表中。
(7)'count':计算参数出现的次数,存储到参数名中。
(8)'help':显示帮助信息并退出。- nargs: 命令行参数的数量,默认为None。
- const: 常量值,用于一些特殊的动作,默认为None。
- default: 命令行参数的默认值,默认为None。
- type: 命令行参数的数据类型,默认为None。
(1)int:整数。
(2)float:浮点数。
(3)str:字符串。
(4)bool:布尔值。
- choices: 命令行参数允许的值的列表,默认为None。
- required: 命令行参数是否为必选,默认为False。
- help: 命令行参数的帮助文本,默认为None。
- metavar: 命令行参数在帮助文本中的名称,默认为None。
- dest: 命令行参数存储在解析结果中的属性名称,默认为None。
(1)默认情况下,参数名称与属性名称相同。
(2)若指定dest,则使用dest指定的参数名称作为属性名称。
--verbose
和 -v
是可选参数,action='store_true'
表示如果该参数在命令行中出现,则将其对应的属性设置为 True
,否则为 False
import argparse
# 创建一个解析器对象,description 参数用于提供程序的简要描述
parser = argparse.ArgumentParser(description='这是一个argparse 示例,我是描述信息')
# 添加可选参数
parser.add_argument('--verbose', '-v', action='store_true', help='启用详细输出')
# 解析命令行参数,将结果存储在 args 对象中
args = parser.parse_args()
# 使用参数
if args.verbose:
print("详细输出已启用。")
else:
print("详细输出未启用。")
4.默认值和选择
choices
参数指定了参数的可选值,default
参数指定了参数的默认值
import argparse
# 创建解析器
parser = argparse.ArgumentParser(description='这是一个包含默认值和选择的示例')
# 添加参数,设置默认值和选择
parser.add_argument('--color', choices=['red', 'green', 'blue'], default='red', help='选择颜色')
# 解析参数
args = parser.parse_args()
# 使用参数
print(f"你选择的颜色是 {args.color}。")
5运行py命令:
python3 test_parase.py --name "丽丽" --age 18