Python之argparse

Python之argparse

argparse

argparse是Python的一个标准库,用于编写命令行界面。它提供了一种简单的方式来定义和解析命令行参数和选项,使得编写命令行程序变得更加容易。

下面是一个使用argparse的简单示例:

import argparse  
  
parser = argparse.ArgumentParser(description='这是一个示例程序')  
parser.add_argument('args', metavar='N', type=int, nargs='+', help='整数参数')  
parser.add_argument('--sum', dest='compute_sum', action='store_true', help='求和输入的整数')  
parser.add_argument('--max', dest='compute_max', action='store_true', help='求输入的最大整数')  
  
args = parser.parse_args()  
  
if args.compute_sum:  
    print(sum(args.args))  
elif args.compute_max:  
    print(max(args.args))  
else:  
    print(args.args)

在这个示例中,我们首先导入了argparse模块,然后创建了一个ArgumentParser对象,并为其提供了一个描述。接下来,我们使用add_argument()方法添加了两个位置参数(整数参数)和两个可选参数(–sum和–max)。最后,我们使用parse_args()方法解析命令行参数,并根据解析结果执行相应的操作。

我们可以使用以下命令来运行这个程序:

python myprogram.py 1 2 3 4 --sum  # 输出10  
python myprogram.py 1 2 3 4 --max  # 输出4  
python myprogram.py 1 2 3 4        # 输出[1, 2, 3, 4]

argparse库的使用非常灵活,可以处理各种复杂的命令行参数和选项。如果你想编写一个命令行程序,那么argparse绝对是你不可或缺的工具。

parser.usage

parser.usage 是在某些命令行参数解析库(例如 argparse)中使用的一个属性。这个属性通常用来生成帮助信息。

在使用 argparse 或类似的库时,你可以设置 parser.usage 属性以提供你的命令行程序的使用信息。这通常是一个字符串,描述了如何使用你的命令行程序。

下面是一个例子:

import argparse  
  
parser = argparse.ArgumentParser()  
parser.usage = 'usage: my_program [-h] [--version] <input> [<input> ...]'  
  
parser.add_argument('-h', '--help', action='help', help='show this help message and exit')  
parser.add_argument('--version', action='version', version='%(prog)s 2.0')  
parser.add_argument('inputs', metavar='<input>', help='input files')  
  
args = parser.parse_args()  
# ...后续处理

在这个例子中,parser.usage 属性设置为 'usage: my_program [-h] [--version] <input> [<input> ...]'。当你运行程序并使用 -h--help 参数时,这个使用信息将会被显示出来。

需要注意的是,这个 parser.usage 属性并不是必须的,特别是在你已经有了一个适当的帮助信息提示的时候。然而,如果你需要更详细的用法信息(例如每个选项和参数的详细描述),你可能需要使用它。

parser.print_help

根据您提供的信息,我推测您可能正在使用Python的argparse模块,并遇到了一个名为"parser"的对象。

在Python的argparse模块中,"parser"通常是一个ArgumentParser对象,用于处理命令行参数和选项。如果您想要打印该对象的帮助信息,可以使用"print_help()"方法。

下面是一个示例代码,展示如何使用argparse模块创建一个解析器并打印帮助信息:

import argparse  
  
# 创建一个解析器对象  
parser = argparse.ArgumentParser(description='这是一个示例程序')  
parser.add_argument('args', metavar='N', type=int, nargs='+', help='整数参数')  
parser.add_argument('--sum', dest='compute_sum', action='store_true', help='求和输入的整数')  
parser.add_argument('--max', dest='compute_max', action='store_true', help='求输入的最大整数')  
  
# 打印帮助信息  
parser.print_help()

运行上述代码将输出解析器的帮助信息,包括程序的描述、参数和选项的说明。

请注意,这只是一个示例,实际使用中,您可以根据您的需求自定义解析器的参数和选项。

parser.add_argument

parser.add_argument 是 Python 的 argparse 模块中的一个方法,用于指定程序运行时需要接受的命令行参数。

它的基本语法如下:

ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])

以下是 parser.add_argument 的参数说明:

  1. dest:该参数是将该参数存储为命名属性,即当该参数在命令行中出现时,其值将被存储到这个属性中。
  2. type:该参数用于指定参数的数据类型。例如,如果参数应该是一个整数,则可以将其类型设置为 int
  3. default:该参数用于指定参数的默认值。如果命令行中未指定该参数,则将使用此默认值。
  4. help:该参数用于提供关于该参数的帮助信息,当用户在命令行中使用 -h--help 选项时,这些信息将被显示出来。
  5. required:该参数用于指示该参数是否为必需参数。如果设置为 True,则命令行中必须指定该参数。
  6. choices:该参数用于指定该参数的可选值列表。如果用户在命令行中输入的值不在列表中,则会出现错误。
  7. metavar:在帮助信息中显示的该参数的名称。通常用于短格式(如 -f)和长格式(如 --file)的参数名。
  8. action:该参数用于指定如何处理参数值。例如,可以将其设置为 ‘store’(存储参数值)、‘store_const’(存储一个固定值)、‘store_true’(存储布尔值 True)等。

另外,还有两个常用的参数:

  • nargs:用于指定命令行参数应该消耗多少个位置参数。可以是整数(表示参数值应该有多少个),或者是字符 ?(表示参数是可选的)、*(表示参数值可以是任意长度的列表)或 +(表示参数值至少有一个)。
  • const:在某些 action 和 nargs 的组合下,当命令行参数出现时,将其设为这个值。

以上就是 parser.add_argument 的详细说明。通过使用这个方法,我们可以灵活地定义和解析命令行参数,进而实现更复杂的程序行为。

以下是对每个参数的举例说明:

  1. dest
    • 例子:parser.add_argument('--foo', dest='foo')
    • 说明:当命令行中出现 --foo 参数时,它的值将被存储到 args.foo 这个属性中。
  2. type
    • 例子:parser.add_argument('--bar', type=int, dest='bar')
    • 说明:当命令行中出现 --bar 参数时,它的值将被转换为整数并存储到 args.bar 这个属性中。
  3. default
    • 例子:parser.add_argument('--baz', default=True, dest='baz')
    • 说明:当命令行中未出现 --baz 参数时,它的默认值 True 将被存储到 args.baz 这个属性中。
  4. help
    • 例子:parser.add_argument('--qux', help='This is a help message', dest='qux')
    • 说明:当用户在命令行中使用 -h--help 选项时,会显示关于 --qux 参数的帮助信息 “This is a help message”。
  5. required
    • 例子:parser.add_argument('--quux', required=True, dest='quux')
    • 说明:在这个例子中,--quux 是必需的参数,如果在命令行中未指定,程序将无法运行。
  6. choices
    • 例子:parser.add_argument('--corge', choices=['a', 'b', 'c'], dest='corge')
    • 说明:在这个例子中,--corge 的值只能是 ‘a’、‘b’ 或 ‘c’。如果用户输入的值不在这些选项中,程序将显示一个错误信息。
  7. metavar:该参数在帮助信息中显示的参数名。例如,如果参数名是 -f--file,则可以将 metavar 设置为 N,在帮助信息中将显示为 -f, --file N。但通常在短格式和长格式的参数之间使用逗号来分隔,所以这个例子不常用。
  8. action
    • 例子:parser.add_argument('--grault', action='store_true', dest='grault')
    • 说明:在这个例子中,当 --grault 参数在命令行中出现时,它的值将被存储为布尔值 True 并存储到 args.grault 这个属性中。
  9. nargs:该参数指定命令行参数应该消耗多少个位置参数。例如,如果 nargs=1,则参数值应该只有一个;如果 nargs=*,则参数值可以有任意多个;如果 nargs=+,则参数值至少有一个。可以与 action 参数配合使用,例如 action=‘append’ 时可以使用 * 或 +。例如:
    • 例子:parser.add_argument('--garply', nargs='+', action='append', dest='garply')
    • 说明:在这个例子中,当命令行中出现 --garply foo bar baz 时,它的值将被存储为一个列表 ['foo', 'bar', 'baz'] 并存储到 args.garply 这个属性中。并且由于 action 是 ‘append’,所以这个值将被追加到之前的值后面(如果有的话)。如果之前的值是 ['apple'],则最后的值将是 ['apple', 'foo', 'bar', 'baz']
  10. const:该参数在某些 action 和 nargs 的组合下,当命令行参数出现时,将其设为这个值。例如:
    • 例子:parser.add_argument('--waldo', action='store_const', const='Hello, world!', dest='waldo')
    • 说明:在这个例子中,当命令行中出现 --waldo 参数时,它的值将被存储为字符串 'Hello, world!' 并存储到 args.waldo 这个属性中。注意这个值是在参数出现时立即设置的,而不是等到解析器对象被解析时才设置。所以如果命令行中出现了 --waldo,则即使它后面没有跟任何值,程序也能正常运行。但如果在命令行中未出现 --waldo,则默认值将不会被存储(因为默认值是在解析器对象被解析时才设置的)。

parser.add_argument 是一个非常强大的工具,可以帮助您定义命令行接口,并使得您的程序易于使用。以下是一些 add_argument 的使用示例:

import argparse  
  
# Parser 对象  
parser = argparse.ArgumentParser(description='Process some integers.')  
  
# Example 1: positional arguments  
parser.add_argument('integers', metavar='N', type=int, nargs='+',  
                    help='an integer for the accumulator')  
  
# Example 2: optional arguments with shortcuts  
parser.add_argument('-n', '--count', dest='accumulate', action='store_true',  
                    help='count the number of integers')  
  
args = parser.parse_args()  
  
if args.accumulate:  
    total = sum(args.integers)  
    print(total)  
else:  
    print('no accumulation done')

在这个例子中,我们使用 add_argument 来定义两个命令行选项:一个位置参数和一个可选参数。

  • 位置参数 ‘integers’ 是必须的,用户需要在命令行中提供至少一个整数。如果用户没有提供整数,程序将报错。这个参数使用 ‘+’ 来表示可重复性,所以用户可以提供多个整数。
  • 可选参数 ‘-n’ 或 ‘–count’ 用来决定是否计算所有整数的总和。如果用户在命令行中使用了这个选项,那么程序会计算整数总和并打印出来;否则,程序会打印一个消息说没有进行计算。

记住,使用 argparse 可以使你的程序具有可读性强的命令行接口,这是非常重要的,特别是对于需要用户输入大量参数或者复杂选项的场景。

parser.add_argument 是一个非常强大的工具,可以帮助您定义命令行接口,并使其易于理解和使用。以下是一些 parser.add_argument 参数的例子说明:

import argparse  
  
# 创建一个解析器对象  
parser = argparse.ArgumentParser(description='这是一个示例程序')  
  
# 添加一个位置参数,它是一个整数  
parser.add_argument('integers', metavar='N', type=int, nargs='+',  
                    help='一个整数用于累加')  
  
# 添加一个单选标志,当它出现时,我们将其值设为 True  
parser.add_argument('--flag', action='store_true',  
                    help='一个标志没有参数')  
  
# 添加一个可选参数,当它出现时,我们将其值设为一个字符串  
parser.add_argument('--input', type=str, help='一个输入文件')  
  
# 添加一个带有默认值的可选参数  
parser.add_argument('--output', type=str, default='./output.txt',  
                    help='输出文件 [default: %(default)s]')  
  
args = parser.parse_args()

在这个例子中,我们定义了一个位置参数(一个或多个整数),一个单选标志,一个可选参数和一个带有默认值的可选参数。通过使用 argparse,我们可以轻松地解析命令行参数,并将其值存储在 args 对象中,以便在程序中使用。例如,如果我们运行 python myprogram.py --flag --input myfile.txt 1 2 3,那么 args 对象将具有以下属性: flag=Trueinput='myfile.txt'integers=['1', '2', '3']

parser.add_argument 是一个非常常用的 argparse 方法,用于指定命令行参数。以下是一些 parser.add_argument 参数的例子说明:

import argparse  
  
# 创建一个解析器对象  
parser = argparse.ArgumentParser(description='这是一个示例程序')  
  
# 添加一个位置参数,它将存储一个整数  
parser.add_argument('integers', metavar='N', type=int, nargs='+', help='整数参数')  
  
# 添加一个可选参数,其默认值为 False,当出现时将存储 True  
parser.add_argument('--sum', dest='compute_sum', action='store_true', help='求和输入的整数')  
  
# 添加一个可选参数,其默认值为 False,当出现时将存储 True  
parser.add_argument('--max', dest='compute_max', action='store_true', help='求输入的最大整数')  
  
args = parser.parse_args()

在这个例子中,我们创建了一个解析器对象并添加了三个参数:一个位置参数和两个可选参数。位置参数 ‘integers’ 将接收一组整数,可选参数 ‘–sum’ 和 ‘–max’ 是开关,如果它们在命令行中出现,它们将分别设置 compute_sum 和 compute_max 属性为 True。如果它们未出现,它们的默认值将为 False。

命令行使用示例:

python myprogram.py 1 2 3 4 --sum  # 输出10  
python myprogram.py 1 2 3 4 --max  # 输出4  
python myprogram.py 1 2 3 4        # 不输出任何求和或最大值信息,只输出 [1, 2, 3, 4]

在这个例子中,第一个命令求和输入的整数,第二个命令求输入的最大整数,第三个命令不进行任何计算。

parser.add_argument 的参数可以根据具体需求进行不同的设置,以下是一些示例说明:

import argparse  
  
# 创建一个解析器对象  
parser = argparse.ArgumentParser(description='这是一个示例程序')  
  
# 添加整数参数  
parser.add_argument('--input1', type=int, help='输入的整数1')  
  
# 添加字符串参数  
parser.add_argument('--input2', type=str, help='输入的字符串2')  
  
# 添加布尔型参数(使用store_true)  
parser.add_argument('--flag', action='store_true', help='这是一个布尔型标志')  
  
# 添加可选参数(使用append)  
parser.add_argument('--inputs', action='append', help='输入的文件名,可以多个')  
  
# 添加两个位置参数(使用nargs指定)  
parser.add_argument('pos1', type=int, help='位置参数1')  
parser.add_argument('pos2', type=str, help='位置参数2')  
  
args = parser.parse_args()

在这个例子中,我们使用 parser.add_argument 添加了不同类型的参数:整数、字符串、布尔型、可选位置参数等。每个参数都有自己的名称(或标志)、类型、动作和帮助信息。根据需要,你可以对参数进行不同的设置。

《AUTOSAR谱系分解(ETAS工具链)》之总目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值