我有一个通常需要位置参数的脚本:some-script POS
。但是,当" - 版本"国旗已经存在,我希望能够“放弃”#34;位置arg要求:some-script --version
。
在argparse框架中有没有正确的方法呢?
我可以选择使用"--version" in sys.argv
,但我希望能够使用argparse。
答案 0 :(得分:2)
有一个version
action可以实现这一目标:
def self.all_combinations(*sets)
input = *sets;
prod = sets.inject(1) { |p,a| p * a.length }
prod.times do |p|
args = []
index = p
input.each do |array|
quotient = index / array.length
remainder = index % array.length
args << array[remainder]
index = quotient
pp args
end
end
答案 1 :(得分:1)
您必须通过设置nargs='?'
使位置参数成为可选项,而不是在代码中引发错误(如果它不存在)。例如:
parser.add_argument('POSITIONAL', dest='positional', nargs='?')
...
if parsed.positional is None:
print('Positional argument "POSITIONAL" is required')
sys.exit(1)