본문 바로가기
카테고리 없음

파이썬 Context Manager 정리, 예제코드 포함

by python pro 2023. 2. 23.
반응형

Context Manager는 파이썬에서 특정한 리소스의 사용을 관리하기 위한 디자인 패턴입니다. 이 패턴을 사용하면 코드의 가독성이 좋아지고, 예외처리와 관리에 대한 부담이 줄어들게 됩니다.

 

Context Manager를 사용하기 위해서는 클래스를 정의하고, enter()와 exit() 메소드를 구현하면 됩니다.

enter() 메소드는 with 문이 실행될 때 호출되며, exit() 메소드는 with 문이 종료될 때 호출됩니다.

 

class OpenFile:
    def __init__(self, filename, mode):
        self.filename = filename
        self.mode = mode

    def __enter__(self):
        self.file = open(self.filename, self.mode)
        return self.file

    def __exit__(self, exc_type, exc_val, exc_tb):
        self.file.close()

with OpenFile("sample.txt", "w") as f:
    f.write("This is a sample text.")

 

위 예시에서 OpenFile 클래스는 sample.txt 파일을 열고, with 문이 종료될 때 close() 메소드를 호출하여 파일을 닫는 Context Manager입니다.

 

잘만 활용하면 훨씬 나은 코드를 작성할 수 있습니다. 예를 들어, 파일을 열고 닫을 때, 데이터베이스에 연결하고 끊을 때, 락을 걸고 풀 때 등의 경우에 사용될 수 있습니다. 

 

추가적인 예시코드도 정리해봤습니다.

from contextlib import contextmanager

@contextmanager
def open_file(file_path, mode):
    file = open(file_path, mode)
    try:
        yield file
    finally:
        file.close()

# Example usage
with open_file('file.txt', 'w') as f:
    f.write('Hello World!')
반응형

댓글