2012-07-17 4 views
24

파이썬의 ConfigParser를 사용하여 구성 파일을 만듭니다. 섹션에 특정 옵션이 정의되어 있는지 확인하고 그 옵션이 있으면 값을 가져옵니다. 이 옵션이 정의되지 않은 경우 특별한 동작없이 계속 진행하기 만하면됩니다. 이렇게하는 데는 두 가지 방법이있는 것 같습니다.Python ConfigParser : 옵션 존재 여부 확인

if config.has_option('Options', 'myoption'): 
    OPTION = config.get('Options', 'myoption') 

또는 :

try: 
    OPTION = config.get('Options', 'myoption') 
except ConfigParser.NoOptionError: 
    pass 

하나의 방법은 다른 선호되어 있습니까? if의 라인 수는 적지 만 가끔 try/except이 많은 경우에 파이썬으로 간주됩니다.

답변

22

try/except와 if-condition 중 하나를 선택하는 것이 퍼지 라인입니다.

  1. 당신은 예외가 매우 드문 것으로 기대한다면, 그것은 더 밀접하게 모델은 반대로
  2. 생각, 구성 항목과 같은 예외가 누락 "기대"를 제외하고/시도 사용할 컨트롤의 정상적인 흐름의 일부이며 코드는 그것을 반영해야합니다.

분명히 우월한 선택 사항은 없지만 (2)의 사례가있는 것처럼 들리므로 내가 /를 선택할 수 있습니다. 이것은 용서보다 허가의 용서와 구조물의 상대적 효율성을 묻기가 더 쉽다는 측면을 완전히 무시합니다.

+0

그건 의미가 있습니다. 'if' 메서드를 사용하겠습니다. 한 가지 방법이 다른 방법보다 빠르다는 것을 알고 싶을 것입니다. 'if' 메소드는 ConfigParser 객체를 두 번 호출하는데,'try' 메소드는 한 번만 수행합니다. 그게 영향을 줄지 모르겠습니다. – user1272534