name or flags (参数名或参数标志):
标识命令行中参数的方式。对于位置参数,这是必需的;对于可选参数,可以是一个或多个选项字符串(如 '-a', '--all')。
add_argument 方法可以只提供此项,后面的参数都是可选可不选的
python
import argparse
def create_parser():
# 创建 ArgumentParser 对象
parser = argparse.ArgumentParser(description='这是一个简化的命令行参数示例。')
# 添加一个必需的位置参数
parser.add_argument('message', help='用户想要输出的消息')
# 返回解析器对象
return parser
# 创建解析器对象
parser = create_parser()
# 解析命令行参数
args = parser.parse_args()
print(f"你输入的消息是: {args.message}")
赋值:字符串或字符串列表。
action (指定参数的处理方式):
当命令行参数出现时采取的动作。
赋值:store (默认,保存值到属性), store_const (保存一个常量值), store_true 或 store_false (保存 True 或 False),append (将值添加到列表中), append_const (添加一个常量到列表), count (计数出现的次数), help (打印帮助并退出), version (打印版本信息并退出)。
nargs (命令行应读取的命令行参数的数量):
赋值:整数,? (0或1), * (任意数量,作为列表存储), + (至少一个,作为列表存储), 字符串 (用于可变位置参数)。
const (当 action 为 store_const、append_const 时,指定要存储或追加的常量值):
赋值:任何类型。
default (当参数未在命令行中指定时使用的值):
参数的默认值。
赋值:任何类型。
type (指定如何将命令行参数转换为 Python 类型):
用于转换参数值的类型。
赋值:类型或可调用对象。
choices (限制参数的可能值):
赋值:容器类型(如列表或元组)。
required (是否需要该参数):
如果为 True,则参数是必需的。
赋值:布尔值。
help (在命令行帮助消息中显示的描述):
参数的简短描述。
赋值:字符串。
metavar (自定义命令行帮助中参数的显示名称):
在命令行帮助消息中使用的参数值的名称。如果不提供,则使用 flags
中的名称。
赋值:字符串。
dest (指定在解析后的命名空间中保存参数值的属性名):
参数值的属性名称(在解析后的命名空间对象中)。
赋值:字符串。
python
import argparse
# 创建一个ArgumentParser对象
# description参数提供了程序的简短描述,而epilog参数提供了帮助信息的自定义结尾。
parser = argparse.ArgumentParser(description='一个简单的命令行计算器', epilog='这是一个自定义的帮助信息结尾')
# 定义位置参数名称:'numbers' 是这个位置参数的名称。在解析命令行参数后,可以通过 args.numbers【←这是一个列表】 来访问传递给这个参数的值。
# 【除了让人困惑以外没啥卵用】设置元变量名称:metavar='N' 指定了在帮助信息中显示的参数名称。当用户请求帮助时(如python script.py --help),他们会看到这个 N 作为参数的占位符。
# 指定参数类型:type=float 指定了参数的类型应该是浮点数。这意味着传递给 'numbers' 参数的值会被自动转换为浮点数类型。
# 设置参数数量:nargs='+' 指定了 'numbers' 参数应该接收一个或多个值。+ 符号表示至少需要一个值,而用户可以提供多个值,这些值将被收集到一个列表中。
# 提供帮助信息:help='要进行计算的数字' 提供了一条简短的描述,解释了这个参数的作用。这条信息将出现在程序的帮助输出中。
# 这行代码定义了一个名为 'numbers' 的位置参数,它接收一个或多个浮点数,并将这些数值收集到一个列表中。这个列表之后可以用于执行各种数值计算。
# 如果运行 python script.py 1.5 2.3 4.6,args.numbers 将会是一个包含 [1.5, 2.3, 4.6] 的列表。
parser.add_argument('numbers', metavar='N', type=float, nargs='+', help='要进行计算的数字')
# 当用户通过命令行指定 -a或--add 选项时,
# 程序会将一个执行加法运算的函数【const=sum】存储【action='store_const'】到 args.operation 属性【 dest='operation'】中。
# 之后,程序可以使用这个函数来执行加法运算。
parser.add_argument('-a','--add', dest='operation', action='store_const', const=sum, default=sum, help='执行加法运算 (默认操作)')
# 当用户通过命令行指定 -m或--multiply 选项时,
# 程序会将一个执行乘法运算的匿名函数【const=lambda x: x[0] * x[1]】存储【action='store_const'】到 args.operation 属性【dest='operation'】中。
# 之后,程序可以使用这个函数来执行乘法运算。
parser.add_argument('-m','--multiply', dest='operation', action='store_const', const=lambda x: x[0] * x[1], help='执行乘法运算')
# 使用parse_args方法解析命令行参数
args = parser.parse_args()
# args.operation是一个函数,args.numbers是一个列表,因此可以直接调用args.operation(args.numbers)进行计算
result = args.operation(args.numbers)
print(result)