📜  为 argparse 选择多个选项 (1)

📅  最后修改于: 2023-12-03 15:21:35.185000             🧑  作者: Mango

为 argparse 选择多个选项

在命令行工具中,使用 argparse 可以非常方便地实现命令行参数的解析。有时候会遇到需要选择多个选项的情况,本文将介绍如何用 argparse 选择多个选项。

使用 add_argument 方法

argparse 的 add_argument 方法支持通过 nargs 参数实现选择多个选项。nargs 参数可以接受以下值之一:

  • 字符: 可以是 +*+ 表示一个或多个选项,* 表示零个或多个选项。
  • 数值: 接受一个数值,表示接受指定数量的选项。

+ 为例:

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('files', nargs='+')
args = parser.parse_args()

print(args.files)

在上面的例子中,我们使用 nargs='+' 接受一个及以上的参数,即选择多个选项。最后我们使用 args.files 来获取选项的值,它将包含所有选项的值的一个列表。

如果我们传递的选项有:

$ python test.py file1.txt file2.txt file3.txt

那么 args.files 将得到以下结果:

['file1.txt', 'file2.txt', 'file3.txt']

如果我们选用 *,则可以接受零个或多个选项,更灵活一些。

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--files', nargs='*')
args = parser.parse_args()

print(args.files)

在上面的例子中,我们使用 nargs='*' 接受零个及以上的参数。如果我们运行:

$ python test.py --files file1.txt file2.txt

那么 args.files 将得到以下结果:

['file1.txt', 'file2.txt']

如果没有传递选项,则 args.files 将为 []

使用 action 参数

argparse 的 add_argument 方法支持通过 action 参数实现选择多个选项。该参数可以接受以下值之一:

  • append: 将选项的值添加到一个列表中。
  • append_const: 将常量添加到一个列表中。
  • count: 统计选项的出现次数。
  • store: 存储一个选项的值,覆盖之前的值。
  • store_const: 存储一个常量。
  • store_true: 存储 True。
  • store_false: 存储 False。
  • ...

以 append 为例:

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--files', action='append')
args = parser.parse_args()

print(args.files)

在上面的例子中,我们使用 action='append' 将每个选项的值添加到 args.files 列表中。如果我们运行:

$ python test.py --files file1.txt --files file2.txt

那么 args.files 将得到以下结果:

['file1.txt', 'file2.txt']

这两个例子展示了如何在 argparse 中实现选择多个选项的两种方法:nargs 和 action。nargs 更为灵活,但 action 更为精细。开发者可以根据实际需要选择使用。