2017-09-12 12 views
1

argparseの位置引数をオプションの引数と相互に排他的にする方法を考えようとしています。例えばArgparseオプションのargsの位置のオーバーライド

:私は単に「--interactive」しようとした場合に今

./adder 20 32 
Output: 52 
./adder --interactive 
adder> 

、それは私が位置引数を欠けていることを私に伝えます。

例コード:これを行うためのエレガントな方法があれば、私は思っていた

parser = argparse.ArgumentParser() 
parser.add_argument('a', metavar='First') 
parser.add_argument('b', metavar='Second') 
parser.add_argument('--interactive') 
parser.parse_args() 

ように「--interactive」は2つの位置引数を使用しての要件を無効に(好ましくはargparse機能を使用して)。

+0

argsなどを指定する実際のコードを確認できますか? –

+0

'add_argument( 'parms'、nargs = '*')'を試してみましたが、コード例 – Princey

+0

を追加しましたか?位置引数がない場合、引数はリストに集められ、リストは空です。 – georgexsh

答えて

0

通常、位置指定引数は省略できません。代わりにnargs='*'を試すこともできます。

parser = argparse.ArgumentParser() 
parser.add_argument('ab', nargs='*', type='int') 
parser.add_argument('--interactive', action='store_true') 
args = parser.parse_args() 

リストargs.abを使用して、位置引数を格納します。省略された場合、args.abは空のリストになります。