2016-08-11 2 views
1

저는 제 모험 게임을 위해 argparse를 계산하려고합니다. 이 내 코드입니다 :파이썬은 게임에 argparse을합니다.

parser = argparse.ArgumentParser(description='Adventure') 
parser.add_argument('--cheat','-c', action='store_true', help='cheat') 
parser.add_argument('--info','-i', action='store_true', help='Information') 
parser.add_argument('--version','-v', action='store_true', help='Version') 
parser.add_argument('--about', '-a', action='store_true', help='About') 

args = parser.parse_args() 

if args.cheat or args.c: 
    print("Cheat") 
    sys.exit() 
elif args.info or args.i: 
    print("Information") 
    sys.exit() 
elif args.version or args.v: 
    print("Version") 
    sys.exit() 
elif args.about or args.a: 
    print("About") 
    sys.exit() 
else: 
    #Game code# 

하지만이 모든 인수를하면 오류를 받고 있어요. 처음에는 속임수 만 쓰면 괜찮 았지만 다른 모든 것을 추가하면 엉망이되었습니다. 어느 여기

내 오류입니다 ... 난 정말 내가 뭘하는지 잘 모릅니다 또는 무슨 잘못 나는 볼 수 없습니다 :이 입력 원하기 때문에 나는이처럼이 이유는

$ python3 adventure.py --info 
    Traceback (most recent call last): 
    File "adventure.py", line 12, in <module> 
    if args.cheat or args.c: 
     AttributeError: 'Namespace' object has no attribute 'c' 

게임을 시작하지 않고 터미널에서, 그래서 당신은 단지 python3 adventure.py를 입력하면 게임이 시작됩니다. 그러나 나는 지금 그것을 할 수 없다 : P. python3 adventure.py -c 및 python3 모험 - 작동합니다.

누구든지 해결책을 알고 계십니까?

감사합니다.

답변

2

오류 메시지는 매우 명확합니다. 'Namespace' object has no attribute 'c'.

For optional argument actions, the value of dest is normally inferred from the option strings. ArgumentParser generates the value of dest by taking the first long option string and stripping away the initial -- string. If no long option strings were supplied, dest will be derived from the first short option string by stripping the initial - character.

은 당신이 당신의 옵션에 대한 장기 및 단기 모두 이름을 가지고 있기 때문에, 긴 이름이 사용됩니다

argparse 라이브러리는 자동으로 명령 행 옵션 in the following way의 값을 저장하는 속성의 이름을 결정합니다. 즉 if args.cheat or args.c:if args.cheat:으로 대체하십시오.