2017-10-31 2 views
-1

그게 내 첫번째 질문에 대한 Stackoverflow 및 전 완전히 파이썬 초보자.여러 시도/예외 확인 구성 파일

파이썬으로 작은 회사의 백업 프로그램을 작성하고 싶지만, 핵심 부분은 끝났지 만 지금은 조금 "휴대용"으로 만들고 싶고 구성 파일을 사용하고 싶습니다. 유효성을 검사하고 싶습니다. .

내 클래스 "getBackupOptions"는 "getBackupOptions.BackupOptions"를 호출 할 때 마지막으로 "BackupOption"dict를 가져올 수 있도록 "GlobalOptions"및 "BackupOption"으로 강화되어야하는 유효성 검사 사전을 제공해야합니다.

지금 내 질문이 있습니다. (이 예제에서는 경로가 재귀 검색되어야하는지 확인하는 기능 만 있기 때문에 쉽습니다.) 코드를 단순화하는 방법은 무엇입니까? 각 (가능한) 오류에 대해 새로운 "TryExcept"블록을 작성해야합니다 - 간단하게 할 수 있습니까?

설정 파일/어레이의 유효성을 검사하는 다른 방법이 있습니까? 으로 키가 있지만 "true"또는 "false"가 아닌 다른 뭔가가있는 경우

class getBackupOptions: 
    def __init__(self,BackupOption,GlobalOptions): 
     self.BackupOption = BackupOption 
     self.GlobalOptions = GlobalOptions 

     self.getRecusive() 


def getRecusive(self): 
    try: 
     if self.BackupOption['recursive'] != None: 
      pass 
    else: 
      raise KeyError 
    except KeyError: 
     try: 
      if self.GlobalOptions['recursive'] != None: 
       self.BackupOption['recursive'] = self.GlobalOptions['recursive'] 
      else: 
       raise KeyError 
     except KeyError: 
      print('Recusive in: ' + str(self.BackupOption) + ' and Global is not set!') 
      exit() 

사실 난 단지 KeyError를하지만, 무엇을 잡을?

도움을 주셔서 감사합니다.

답변

0

그러므로 당신은 KeyError 직면되지 않습니다,이

class getBackupOptions: 
    def __init__(self,BackupOption,GlobalOptions): 
     self.BackupOption = BackupOption 
     self.GlobalOptions = GlobalOptions 

     self.getRecusive() 

    def getRecusive(self): 
     if self.BackupOption.get('recursive') == 'True' and self.GlobalOptions.get('recursive') == 'True': 
      self.BackupOption['recursive'] = self.GlobalOptions['recursive'] 
     else: 
      print('Recusive in: ' + str(self.BackupOption) + ' and Global is not set!') 
      exit() 
  • 여기 get 방법을 사용하려고 할 수 있습니다.
  • True 이외의 텍스트가 필드에 오는 경우 False으로 간주됩니다.