2015-01-31 9 views
0

파이썬 코드를 작성 했으므로 스위치와 인수를 처리하려고합니다. 당신이 -u를 참조하면파이썬 처리 옵션과 arg

다음 인수 print "sth"에는 -d <name>가없는 : 그래서 스크립트 말하고 싶은

if sys.argv=='-u' and sys.argv!='-d': 
    print "You must use the -d switch!" 
    sys.exit() 

이 잘못 방법

답변

3

sys.argv 것 같다 것은 목록 그래서 당신은 좋겠입니다 회원 자격을 시험해야합니다 :

if '-u' in sys.argv and '-d' not in sys.argv: 

howev 어쨌든 argparse library을 사용하면 명령 행 인터페이스를보다 잘 처리 할 수 ​​있습니다. 그것은 직접 상호 의존성을 처리하지 않습니다, 그러나 도움말 메시지와 함께 사용 종료 확장 할 수있을만큼 간단하다

import argparse 
parser = argparse.ArgumentParser() 
parser.add_argument("-u", action='store_true') 
parser.add_argument("-d") 
args = parser.parse_args() 

if args.u and not args.d: 
    parser.error('You must use the -d switch when setting -u!') 

데모 :

>>> import argparse 
>>> parser = argparse.ArgumentParser() 
>>> parser.add_argument("-u", action='store_true') 
_StoreTrueAction(option_strings=['-u'], dest='u', nargs=0, const=True, default=False, type=None, choices=None, help=None, metavar=None) 
>>> parser.add_argument("-d") 
_StoreAction(option_strings=['-d'], dest='d', nargs=None, const=None, default=None, type=None, choices=None, help=None, metavar=None) 
>>> args = parser.parse_args(['-u']) 
>>> args.u 
True 
>>> args.d 
>>> args.u and not args.d 
True 
>>> args = parser.parse_args(['-u', '-d', 'foo']) 
>>> args.d 
'foo' 
>>> args.u and not args.d 
False 
1

체크하면 u목록 sys.argv에서입니다

if '-u' in sys.argv and '-d' not in sys.argv: 
    print "You must use the -d switch!" 
    sys.exit() 
: 및 -d 목록 sys.argv에없는입니다