argparse标志跳过位置参数

时间:2017-03-13 19:05:21

标签: python argparse

我有一个通常需要位置参数的脚本:some-script POS。但是,当" - 版本"国旗已经存在,我希望能够“放弃”#34;位置arg要求:some-script --version

在argparse框架中有没有正确的方法呢?

我可以选择使用"--version" in sys.argv,但我希望能够使用argparse。

2 个答案:

答案 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)