2014-12-12 1 views
1

저는 Python을 처음 접했고 argparse를 시험해보고 있습니다. 첫 번째 인수가 무엇인가와 같은 경우 인수를 추가하고 싶습니다. 내가 사용하여 스크립트를 실행하면argparse : 조건부 add_argument

import argparse 

class ArgsParser : 
    def __init__(self): 
     parser = argparse.ArgumentParser() 
     parser.add_argument('command') 
     args = parser.parse_args() 
     if args.command == 'a' : 
      parser.add_argument('-b', required=True) 
      args = parser.parse_args() 
      self.b = args.b 

def main(): 
    parser = ArgsParser(); 
    print parser.b 

if __name__ == '__main__': 
    main() 

prog.py a -b="abc"

이 오류를

prog.py: error: unrecognized arguments: -b=abc

을 제공하지만

prog.py a

를 사용하여 스크립트를 실행하면 결과는

일 것입니다//docs.python : - :

prog.py: error: argument -b is required

+0

그것은 나에게 보이는'부속 명령의 필수 인수를 -b'. org/3/library/argparse.html # sub-commands – mgilson

답변

1

난 당신이 subparsers이 할 수 있다고 생각 HTTPS 당신이 만들고 싶어처럼

>>> import argparse 
>>> parse = argparse.ArgumentParser() 
>>> subparsers = parse.add_subparsers() 
>>> parse_a = subparsers.add_parser('a') 
>>> parse_a.add_argument('-b', required=True) 
_StoreAction(option_strings=['-b'], dest='b', nargs=None, const=None, default=None, type=None, choices=None, help=None, metavar=None) 
>>> parse.parse_args(['a']) 
usage: a [-h] -b B 
a: error: argument -b is required 
+0

고마워요! 이것은 내가 필요한 것입니다. :) – Mico