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
的参数说明:
dest
:该参数是将该参数存储为命名属性,即当该参数在命令行中出现时,其值将被存储到这个属性中。type
:该参数用于指定参数的数据类型。例如,如果参数应该是一个整数,则可以将其类型设置为int
。default
:该参数用于指定参数的默认值。如果命令行中未指定该参数,则将使用此默认值。help
:该参数用于提供关于该参数的帮助信息,当用户在命令行中使用-h
或--help
选项时,这些信息将被显示出来。required
:该参数用于指示该参数是否为必需参数。如果设置为 True,则命令行中必须指定该参数。choices
:该参数用于指定该参数的可选值列表。如果用户在命令行中输入的值不在列表中,则会出现错误。metavar
:在帮助信息中显示的该参数的名称。通常用于短格式(如-f
)和长格式(如--file
)的参数名。action
:该参数用于指定如何处理参数值。例如,可以将其设置为 ‘store’(存储参数值)、‘store_const’(存储一个固定值)、‘store_true’(存储布尔值 True)等。
另外,还有两个常用的参数:
nargs
:用于指定命令行参数应该消耗多少个位置参数。可以是整数(表示参数值应该有多少个),或者是字符?
(表示参数是可选的)、*
(表示参数值可以是任意长度的列表)或+
(表示参数值至少有一个)。const
:在某些 action 和 nargs 的组合下,当命令行参数出现时,将其设为这个值。
以上就是 parser.add_argument
的详细说明。通过使用这个方法,我们可以灵活地定义和解析命令行参数,进而实现更复杂的程序行为。
以下是对每个参数的举例说明:
dest
:- 例子:
parser.add_argument('--foo', dest='foo')
- 说明:当命令行中出现
--foo
参数时,它的值将被存储到args.foo
这个属性中。
- 例子:
type
:- 例子:
parser.add_argument('--bar', type=int, dest='bar')
- 说明:当命令行中出现
--bar
参数时,它的值将被转换为整数并存储到args.bar
这个属性中。
- 例子:
default
:- 例子:
parser.add_argument('--baz', default=True, dest='baz')
- 说明:当命令行中未出现
--baz
参数时,它的默认值True
将被存储到args.baz
这个属性中。
- 例子:
help
:- 例子:
parser.add_argument('--qux', help='This is a help message', dest='qux')
- 说明:当用户在命令行中使用
-h
或--help
选项时,会显示关于--qux
参数的帮助信息 “This is a help message”。
- 例子:
required
:- 例子:
parser.add_argument('--quux', required=True, dest='quux')
- 说明:在这个例子中,
--quux
是必需的参数,如果在命令行中未指定,程序将无法运行。
- 例子:
choices
:- 例子:
parser.add_argument('--corge', choices=['a', 'b', 'c'], dest='corge')
- 说明:在这个例子中,
--corge
的值只能是 ‘a’、‘b’ 或 ‘c’。如果用户输入的值不在这些选项中,程序将显示一个错误信息。
- 例子:
metavar
:该参数在帮助信息中显示的参数名。例如,如果参数名是-f
或--file
,则可以将metavar
设置为N
,在帮助信息中将显示为-f, --file N
。但通常在短格式和长格式的参数之间使用逗号来分隔,所以这个例子不常用。action
:- 例子:
parser.add_argument('--grault', action='store_true', dest='grault')
- 说明:在这个例子中,当
--grault
参数在命令行中出现时,它的值将被存储为布尔值 True 并存储到args.grault
这个属性中。
- 例子:
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']
。
- 例子:
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=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()
在这个例子中,我们创建了一个解析器对象并添加了三个参数:一个位置参数和两个可选参数。位置参数 ‘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
添加了不同类型的参数:整数、字符串、布尔型、可选位置参数等。每个参数都有自己的名称(或标志)、类型、动作和帮助信息。根据需要,你可以对参数进行不同的设置。