首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Python之argparse

  • 23-11-14 09:53
  • 3170
  • 12953
blog.csdn.net

Python之argparse

文章目录

  • Python之argparse
    • argparse
    • parser.usage
    • parser.print_help
    • parser.add_argument

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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

在这个示例中,我们首先导入了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]
  • 1
  • 2
  • 3

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

parser.usage

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

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

下面是一个例子:

import argparse  
  
parser = argparse.ArgumentParser()  
parser.usage = 'usage: my_program [-h] [--version]  [ ...]'  
  
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='', help='input files')  
  
args = parser.parse_args()  
# ...后续处理
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

在这个例子中,parser.usage 属性设置为 'usage: my_program [-h] [--version] [ ...]'。当你运行程序并使用 -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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

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

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

parser.add_argument

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

它的基本语法如下:

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

以下是 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')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

在这个例子中,我们使用 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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

在这个例子中,我们定义了一个位置参数(一个或多个整数),一个单选标志,一个可选参数和一个带有默认值的可选参数。通过使用 argparse,我们可以轻松地解析命令行参数,并将其值存储在 args 对象中,以便在程序中使用。例如,如果我们运行 python myprogram.py --flag --input myfile.txt 1 2 3,那么 args 对象将具有以下属性: flag=True,input='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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

在这个例子中,我们创建了一个解析器对象并添加了三个参数:一个位置参数和两个可选参数。位置参数 ‘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]
  • 1
  • 2
  • 3

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

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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

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

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

注:本文转载自blog.csdn.net的PlutoZuo的文章"https://blog.csdn.net/PlutoZuo/article/details/133311732"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top