[Python] 데코레이터
·
개발 (Development)/Python
파이썬 데코레이터 :: 함수 기능 확장의 강력한 도구 데코레이터란? 파이썬 데코레이터는 함수의 기능을 추가하거나 변경하는 데 사용되는 도구이다. 함수 앞에 @ 기호와 함께 데코레이터 함수를 작성하여 적용한다. 데코레이터 함수는 원래 함수를 입력으로 받고, 감싸거나 수정된 함수를 반환한다. 데코레이터 작동 방식 데코레이터는 다음과 같은 단계로 작동한다. 데코레이터 함수 호출 : 데코레이터 함수가 @ 기호와 함께 함수 앞에 작성되면 호출된다. 원래 함수 전달 : 데코레이터 함수는 원래 함수를 인수로 받는다. 감싸기 또는 수정 : 데코레이터 함수는 원래 함수를 감싸거나 수정하는 로직을 실행한다. 수정된 함수 반환 : 데코레이터 함수는 감싸거나 수정된 함수를 반환한다. 실행 : 반환된 함수는 일반적인 함수와 동..
[Python] try, except 문에서 Exception이 여러 개일 경우
·
개발 (Development)/Python
Exception을 처리하는 코드에 중복된 동작이 많아서 단순화가 필요했다. 따라서 아래의 과정을 통해 단순화했다. 기존 코드 # 기존 코드 try: # 예외 발생 가능한 코드 영역 print("test") except socket.error as e: send_kafka_message(self, empty_dict) self.logger.error(f":: Socket error occurred: {e}") self.close_socket() self.initialize_socket() return None, meta except Exception as e: send_kafka_message(self, empty_dict) self.logger.error(f":: An error occurred: {s..
[Python] List Comprehension
·
개발 (Development)/Python
Python에서 리스트를 순회하며 값을 치환할 때 for 문을 사용해도 되지만, 아래처럼 List Comprehension으로 For문을 단순화 할 수 있다. 아래는 리스트를 순회하며 True일 경우 1, False일 경우 0으로 치환하는 코드를 For문으로 작성한 경우이다. # 기존 코드 coil_bit_list = list(coils.bits) for i in range(0,len(coil_bit_list)): if coil_bit_list[i]: coil_bit_list=1 else: coil_bit_list=0 아래는 List Comprehension을 사용하여 위의 코드를 단순화한 결과이다. # 수정 코드 coil_bit_list = list(coils.bits) result_list = [1 ..
[Python] 리눅스 환경에서 윈도우 환경으로 파일 저장 (SMB 프로토콜)
·
개발 (Development)/Python
리눅스 환경에서 윈도우 환경으로 파일 혹은 디렉토리와 하위 디렉토리, 파일들을 모두 전송하는 코드이다. 파이썬의 pysmb 모듈을 사용하며 Connection 정보(IP 주소, 사용자 이름, 패스워드 등)를 명확히 입력해주어야 한다. from typing import Tuple, Optional import json import os from smb.SMBConnection import SMBConnection DataGram = Optional[bytes] MetaDataGram = Optional[bytes] # 디렉토리 생성 함수 def create_directory_recursive(self, conn, target_folder, destination_path): # 경로에서 폴더 구조 추출 fo..
[Python] 실행 시간 측정
·
개발 (Development)/Python
실행하고자 하는 코드 라인의 전, 후로 변수에 각각 시간을 담고, 차이를 구하면 실행 시간을 구할 수 있다. 결과값의 단위는 초(second) 이다. import time start_time = time.time() try: # 시간 측정 대상 코드 print("test") except Exception as e: self.logger.info(f"Python task exception : {str(e)}") end_time = time.time() execution_time = end_time - start_time print("Execution time:", execution_time, "seconds")