当前位置: 首页 > 面试题库 >

在Python的argparse中多次使用相同的选项

柳奇思
2023-03-14
问题内容

我正在尝试编写一个脚本,该脚本接受多个输入源并对每个输入源都执行某些操作。像这样

./my_script.py \
    -i input1_url input1_name input1_other_var \
    -i input2_url input2_name input2_other_var \
    -i input3_url input3_name
# notice inputX_other_var is optional

但是我不太清楚如何使用argparse。似乎已设置好,因此每个选项标志只能使用一次。我知道如何将多个参数与单个选项(nargs='*'nargs='+')关联,但这仍然不允许我-i多次使用该标志。我该如何完成这项工作?

为了清楚起见,我最后想要的是一个字符串列表列表。所以

[["input1_url", "input1_name", "input1_other"],
 ["input2_url", "input2_name", "input2_other"],
 ["input3_url", "input3_name"]]

问题答案:

这是一个解析器,该解析器处理重复的2个可选参数-名称在中定义metavar

parser=argparse.ArgumentParser()
parser.add_argument('-i','--input',action='append',nargs=2,
    metavar=('url','name'),help='help:')

In [295]: parser.print_help()
usage: ipython2.7 [-h] [-i url name]

optional arguments:
  -h, --help            show this help message and exit
  -i url name, --input url name
                        help:

In [296]: parser.parse_args('-i one two -i three four'.split())
Out[296]: Namespace(input=[['one', 'two'], ['three', 'four']])

这不能解决问题2 or 3 argument(尽管我前一段时间写了一个补丁来处理这样的范围的Python错误/问题)。

nargs=3和分别定义参数如何metavar=('url','name','other')

元组metavar也可以与nargs='+'nargs='*';一起使用。这两个字符串用作[-u A [B ...]][-u [A [B ...]]]



 类似资料:
  • 问题内容: 有没有一种方法可以使存根方法在后续调用中返回不同的对象?我想这样做是为了测试来自的不确定响应。即,不管方法的返回顺序如何进行测试,结果都保持恒定。 我要测试的代码看起来像这样。 问题答案: 你可以使用方法来做到这一点(与链接时): 或使用等效的静态doAnswer方法:

  • 本文向大家介绍Python的argparse库使用详解,包括了Python的argparse库使用详解的使用技巧和注意事项,需要的朋友参考一下 argparse是python标准库里面用来处理命令行参数的库 命令行参数分为位置参数和选项参数: 位置参数就是程序根据该参数出现的位置来确定的 如:[root@openstack_1 /]# ls root/    #其中root/是位置参数 选项参数是

  • 问题内容: 我有一个类似于以下内容的插入语句: 我需要使用多个ID插入同一条语句。现在我有: 我只是必须运行此程序,还是有一个更精简的版本? 问题答案: 使用:

  • 问题内容: 如何在Python脚本中与Shell选项卡完成协作? 在.py文件上设置了可执行标志后,预期结果应类似于: 问题答案: 看看argcomplete由安德烈Kislyuk。 通过以下方式安装: 导入模块并在调用之前在源代码中添加一行: 并确保bash知道此脚本,请使用 您应该将该行放在您的代码中,或遵循argcomplete的文档并激活“全局”完成。 之后,您可以根据要求完成工作。 其工

  • 问题内容: 试图解析可选的位置参数时,我遇到了以下问题: 例: 输出: 为什么不接受第三个程序调用?这是argparse的限制吗? 问题答案: 这是argparse的局限性,但在3.7中已部分取消。 Unix工具通常不声称支持选项和参数的混合,即使它们经常支持。问题在于将其与子命令等其他功能结合使用会导致歧义。因此,通常,支持所有这些功能的库都会在问题上出现问题,并且不允许混用。或者,他们做一些骇

  • 在同一个表的操作上我需要从表中删除。JPA查询是 我得到了这个错误: 根原因org.hibernate.hql.ast.querySyntaxException:意外标记:(第1行附近,第109列[DELETE FROM com.bcits.bfm.model.electricityledgerEntity a中的a.elledgerId IN(SELECT P.elledgerId FROM(S