当前位置: 首页 > 知识库问答 >
问题:

使用argparse接受更多参数

司寇烨伟
2023-03-14

我正在使用python和argparse编写脚本:

import argparse

parser = prgparse.ArgumentParser(description="do a or b")
parser.add_argument("-a", "--funcA", help="do A")
parser.add_argument("-b", "--funcB", help="do B")

args = parser.parse_args()

if args.funcA:
    print(args.funcA)
if args.funcB:
    print(args.funcB)

我希望能够运行它与python3parseab.py-a 11-b 22-a 33,和函数A将执行两次与11和33,和函数B一次与22。

现在每个功能只发生一次。

*我不想在每个选项后接受更多参数,而是希望能够接受同一函数的多个实例。

谢谢你!

共有1个答案

黄元章
2023-03-14

为了能够将同一选项多次传递给脚本,可以使用argparse的append操作(如@barny所述)。

然后,您应该获取值列表,并为从argparse接收到的列表中的每个值调用函数a()。

代码如下:

import argparse

parser = argparse.ArgumentParser()

# You must provide the flag once per input.
parser.add_argument('-a', '--funcA', help='do A', action='append')
parser.add_argument('-b', '--funcB', help='do B', action='append')

args = parser.parse_args()
if args.funcA:
    for elemA in args.funcA:
        print("a: ", elemA)
    for elemB in args.funcB:
        print("b :", elemB)

和输出:

python3 parseab.py -a 11 -b 22 -a 33
a:  11
a:  33
b : 22

下面的答案提供了关于其他可能性的更多细节:如何使用argparse将列表作为命令行参数传递?

 类似资料:
  • 我的脚本将,作为参数: 但当我将它作为分隔符传递时,它是空的 我知道在参数/参数解析中很特殊,但我以和引用的形式使用它。 为什么它不起作用?我使用的是Python 3.7.3 这是测试代码: 当我运行它作为它打印空。

  • 问题内容: 是否可以在Python的用法或帮助()中不显示参数的情况下将其添加到python中? 问题答案: 是的,您可以将选项设置为。这是argparse文档中的示例:

  • 问题内容: 我正在尝试使用argparse接受type = dict的参数,但是无论输入如何,都会给出无效dict值的错误。 这是我尝试将字典传递给脚本时发生的情况 查看这些文件,我认为这是可能的。 http://docs.python.org/dev/library/argparse.html “任何支持in运算符的对象都可以作为options值传递,因此dict对象,set对象,自定义容器等都

  • 我有两个程序,一个是另一个的包装器。 主程序的args顺序为arg one,--arg1,--arg2包装程序具有主程序的所有args,以及其他args--arg3,--arg4 我希望能够将参数从包装器传递到主程序,而不会出现“参数未识别”错误。然而,我不想使用parse_known_args,因为如果用户犯了一个错别字或使用了一个荒谬的论点,他们就不会收到任何反馈。(这个问题我已经看过了) 除

  • 我和这里的用户遇到了同样的问题:log4j类型genericopobjectpool不接受参数,但我一直无法找到这个问题的答案。Log4j2在附加到rollingfile时起作用,但此处列出的方法:https://logging.apache.org/log4j/2.x/manual/appenders.html显示错误“GenericObjectPool不接受参数”

  • 问题内容: 我的脚本定义了一个主解析器和多个子解析器。我想将论点应用于一些子解析器。到目前为止,代码如下所示: 如您所见,重复了两次。实际上,我还有更多的次级解析器。有没有一种方法可以遍历现有的子解析器以避免重复? 作为记录,我正在使用Python 2.7 问题答案: 这可以通过定义一个包含公共选项的父解析器来实现: 这将生成以下格式的帮助消息: 输出: 输出: 但是,如果您运行程序,则如果未指定