带有args行为的Python argparse错误

坎南·埃卡纳特(Kannan Ekanath)

这是我的argparse样本说sample.py

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-p", nargs="+", help="Stuff")
args = parser.parse_args()
print args

Python-2.7.3

我希望用户在-p选项后提供一个由空格分隔的参数列表。例如,如果您运行

$ sample.py -p x y 
Namespace(p=['x', 'y'])

但是我的问题是当你跑步时

$ sample.py -p x -p y
Namespace(p=['y'])

那里既不存在,也不存在。我想要以下其中一项

  • 向用户抛出一个异常,要求他不要两次使用-p,而只是将它们作为一个参数提供
  • 只需假设它是相同的选项并产生['x','y']的列表即可。

我可以看到python 2.7都没有做,这让我感到困惑。我可以让python执行上面记录的两种行为之一吗?

hpaulj

注意:python 3.8添加了一个action="extend",它将创建所需的['x','y']列表

要生成['x','y']的列表,请使用action='append'其实它给

Namespace(p=[['x'], ['y']])

对于每个,-p它都会给出一个['x']由指示的列表nargs='+',但append意味着将该值添加到命名空间已具有的值中。默认操作仅设置值,例如NS['p']=['x']我建议您查看action文档中段落。

optionals允许通过设计重复使用。它启用诸如append和的动作count通常,用户不希望重复使用它们,或者对最后一个值感到满意。positionals(不带-flag)不能重复(除非允许nargs)。

如何添加可选或一次性参数?对如何创建“不重复”参数提出了一些建议。一种是创建自定义action类。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

python中的“ argparse.ArgumentParser”错误

python argparse十六进制错误

Python argparse“无法识别的参数”错误

无法解决Python argparse错误“对象没有属性”

带有选择的Python argparse

Python2.7 argparse.parse_known_args错误解析

适当的:在Mac上没有名为argparse的模块错误

python argparse-自定义错误消息

Python-Argparse:调用help参数返回错误

带有TimePicker的FragmentDialog的错误行为

Python:带有列表列表的Argparse

带有 ArgumentDefaultsHelpFormatter 和 RawTextHelpFormatter 的 Python Argparse

带有argparse的Python单元测试

带有默认选项的python argparse选项

Python中带有argparse的可选stdin

带有Nagios检查的Python argparse

错误:命令:带有args的xcodebuild的错误代码65

带有条件增量的 Python-For 循环的行为(给出错误的输出)

找不到带有args的Java中的符号错误[]

如何将带有argparse的AWS Sagemaker SM_USER_ARGS解析为argparse命名空间?

argparse:带有MetavarTypeHelpFormatter的ArgumentDefaultsHelpFormatter

带有响应js的地图框gl的错误行为

带有错误承诺回调的行为

使用argparse将命令行参数传递给Python脚本时出现小错误

我无法传递参数错误:无法识别的参数:Argparse Python3

Python argparse带有标志的选择参数的正确格式

Python argparse:如何引用带有破折号的参数

带有强制输入文件参数的python argparse

Python argparse:带有可选和位置参数的互斥参数