是否有方法检查是否已将具有给定名称的参数添加到argparse实例?例如,我希望类似这样的产品能够上市:
argToCheck= 'my_argument'
if (argToCheck in parser.known_arguments): # "known_arguments" isn't a thing, but it should be?
# do some magic
else:
# do some different magic
我强烈怀疑所有添加的参数都是隐藏在argparse中某个地方的dict的键,甚至可能是故意公开的dict的键。。。但我一直没能找到他们
背景
我有一个argparse解析器,它定义了大约12个可选参数:
def jumpParser():
parser = argparse.ArgumentParser()
parser.add_argument("-i", "--input_file", action="store", type=str, required=True, help="input video file")
parser.add_argument("-o", "--output_file", action="store", type=str, required=True, help="output video file")
parser.add_argument("-s", "--stamp", action="store_true", help="enable frame stamping")
# and so on...
return parser
另外,我还有一些代码,可以解析excel工作表来调用一个函数,每行XLS都有一组不同的参数,列标题是参数名
理想情况下,我希望用户能够拥有一些列,这些列的标题不是特定解析器严格已知的参数,因此它只跳过这些列,并使用特定解析器已知的该行参数调用函数
您可以使用
parser._actions
访问已添加到解析器的参数这将为您提供一个
只需对解析器进行一些调整。请注意
add_argument
返回一个Action
对象,可以忽略该对象,也可以将其赋值给变量:动作的
repr
是什么样子的。这些是主要属性,但不是全部解析器本身是一个对象,具有方法和属性
我们可以使用适当的字符串列表测试解析器,模拟通过命令行提交的值
如果有足够的必需参数,结果
Namespace
将显示所有已定义的参数(除非某些参数是SUPRESSED
):我们可以把这个名称空间对象看作一个字典,例如
这些键对应于参数
dest
属性相关问题 更多 >
编程相关推荐