2014-04-10 1 views
0

Python2.4 및 2.6 모두에서 argparse와 함께 min()을 사용하려고합니다. 나는 2.6에서 잘 작동하는 다음 코드를 가지고 있지만 2.4에서는 구문 오류가 발생한다. 필자는 2.4에 대한 문서를 살펴 보았습니다.이 문서는 2.4를 사용하여 몇 가지 예를 찾아 보았습니다 만 찾을 수 없었습니다. Argparse는 내가 말할 수있는 것에서 2.4에서 잘 작동한다. argparse에서Python2.4 및 2.6에서 min() 사용

라인 :

parser.add_argument("--no-alert-on-critical", action='store_true', help='disable critical alerts and dashboard status\'s for this check (default: yes)') 

변수 설정 :

+0

당신은 예외의 추적을 게시 할 수 있을까요? 아마 그 문제를 좁히는 데 도움이 될까요? (아마도?) ... dunno ... – BorrajaX

답변

1

또는 단지 분()를 사용하여 건너가 ...

def calc_code(): 
    # pick a better function name 
    if args.no_alert_on_critical: 
     if args.no_alert_on_warning: 
      return 0 
     return 1 
    return 2 

critical_status_exit_code = calc_code() 

또는 ...

critical_status_exit_code = 2 
if args.no_alert_on_critical: 
    critical_status_exit_code -= 1 
    if args.no_alert_on_warning: 
     critical_status_exit_code -= 1 
+0

첫 번째 대답은 여러 파일에서이 작업을 수행함에 가장 좋지만 각 종료 상태 (중요, 알 수없는, 경고)에 대해 여러 기능을 생성하고 싶지 않습니다. 두 번째 대답은 구현할 때 가장 간단하고 가장 읽기 쉽습니다. – Matty

+0

장소에서 재사용하는 경우 언제든지 기능을 사용할 수 있으며 상태 코드가 다른 경우 해당 코드를 전달할 수 있습니다. 또한 두 번째 예제에서는 각각에 대해 - = 1 대신 1과 0을 사용하는 것이 더 읽기 쉽습니다. 저는 Alex가 문제의 실제 이유를 제시하는데 동의하지만 때로는 더 간단한 해결책이 있기 때문에 전반적인 목표를 살펴 보는 것이 좋습니다. – pcm

2

삼항 사업자는 파이썬 2.5에 추가 된

critical_status_exit_code = min(1 if args.no_alert_on_critical else 2, 
           0 if args.no_alert_on_warning and args.no_alert_on_critical else 2) 

감사합니다, 그래서 그 전에 어떤 버전은 SyntaxError에서 발생합니다 하나에 대한 응답. 당신은 ifelse 문으로 변수에게 먼 길을 정의해야합니다 :

if args.no_alert_on_critical: 
    var = 1 
else: 
    var = 0 

다음, 당신의 모든 값에 그렇게 그들은 min()에 저장되어있는 변수를 전달합니다.

+0

더 간단하기 때문에 다른 대답을 수락하고 있지만 여전히 내 코드가 작동하지 않는 이유에 대해 설명했기 때문에 나는 여전히 당신에게 상향 투표를하고 있습니다. – Matty