2017-12-19 4 views
1

경우 나는 코드사용 클래스는 내부 문

class disable_file_system_redirection: 
    if mysystem == "Windows": 
     _disable = ctypes.windll.kernel32.Wow64DisableWow64FsRedirection 
     _revert = ctypes.windll.kernel32.Wow64RevertWow64FsRedirection 

     def __enter__(self): 
      self.old_value = ctypes.c_long() 
      self.success = self._disable(ctypes.byref(self.old_value)) 

     def __exit__(self, type, value, traceback): 
      if self.success: 
       self._revert(self.old_value) 
    else: 
     pass 

If test == “yes”: 
    with disable_file_system_redirection: 
     try: 
      “some code” 
else: 
    try: 
     “same code” 

의이 종류가 있습니다. 오류가 발생하지 않고 두 개의 동일한 코드를 병합 할 수 없습니다. 당신이 함수에 코드를 아웃소싱 할 수

If test = = “yes”: 

    with disable_file_system_redirection: 
else: 
    pass #without disable_file_system_redirection: 

“some code” 
+0

의 필요가 없습니다'IF-else', 당신은'시도 - except' 선택할 수 있습니다 블록. –

답변

0

같은 것을 할 수있는 가능한 방법이 있나요 :

def code_to_do(): 
    print("code_to_do") 

if test == "yes": 
    with disable_file_system_redirection: 
     try: 
      code_to_do() 
     except Exception as e: 
      print(str(e)) 
else: 
    try: 
     code_to_do() 
    except Exception as e: 
     print(str(e)) 
+0

감사합니다. 그것은 짖었다 –