파이썬 with문은 DB에 연결하거나 파일 스트림을 열 때 유용합니다. 앞의 작업들은 완료한 이후에 close함수를 호출해야 합니다. 파일 스트림은 열고 난 이후에 닫아줘야 하고, DB도 연결을 종료해야 합니다. 그렇지 않으면 추가로 연결하기 어렵거나 파일에 문제가 생길 수 있습니다. 오늘은 이런 경우 편리하게 사용할 수 있는 파이썬 with문에 대해서 알아보겠습니다.
코드를 작성하다보면 닫는 작업을 잊어버릴 때가 있습니다. 혹은 코드 중간에 에러가 발생해서 close함수가 있는 곳까지 코드가 도달하지 못하는 경우도 있지요. 이런 오류나 불편함을 방지하기 위해서 close함수가 필요한 경우에는 with문을 사용하는 것이 좋습니다. with문은 해당 코드를 벗어날 때 자동으로 close함수를 호출해주기 때문입니다.
with문 사용법은?
with문은 as와 같이 사용합니다. 파일을 열 때 아래와 같이 코드를 작성합니다.
with open('test.txt') as f:
f.readlines()
위와 같이 작성하면 close함수를 별도로 호출하지 않아도 됩니다.
with문 실제 동작방법은?
with문이 실제 동작은 이렇습니다. with문에 진입할 때 객체의 __enter__ 함수를 호출합니다. 그리고 with문이 종료될 때 __exit__함수를 호출합니다. 그래서 이 두 함수를 정의하면 with문에서 사용할 수 있는 객체를 만들 수도 있습니다.
with문에 동작하는 객체 만들기
아래와 같은 클래스를 정의하고 with문을 이용해 보았습니다.
class Test:
def __init__(self):
print('초기화')
def __enter__(self):
print("with문 들어왔습니다")
def __exit__(self, exc_type, exc_val, exc_tb):
print("with문 종료되었습니다.")
with Test() as f:
print("with문 안 입니다.")
[결과]:
초기화
with문 들어왔습니다
with문 안 입니다.
with문 종료되었습니다.
__exit__ 메소드에는 예외 유형, 예외값, 디버깅에 필요한 역추적 객체가 값으로 입력됩니다. close함수가 필요한 작업이 있으면 위와 같이 클래스를 정의하고, __exit__함수에 작성하면 됩니다.
오늘은 이렇게 파이썬 with문 유용한 이유와 사용법에 대해서 알아보았습니다. 파일 스트림 이외에 DB를 열고 닫을 때 사용하면 유용합니다. 다른 작업에도 유용하게 사용할 수 있는 방법이 있다면 공유해주시면 좋겠습니다.
'파이썬 > 파이썬 기초' 카테고리의 다른 글
파이썬 - 아나콘다 배포판 설치 및 실행, 사용법은?! (0) | 2022.02.05 |
---|---|
파이썬 split 함수 사용법과 예제, 문자열 나누기! (0) | 2022.02.05 |
파이썬 아나콘다 실행 및 사용법, 네비게이터 이용하기! (0) | 2022.02.04 |
파이썬 import문과 from ~ import ~ 등 사용법 알아보기 (0) | 2022.02.04 |
파이썬 문자열 바꾸기 3종-replace, strip, title 이용하기! (0) | 2022.01.28 |
주피터 노트북 초기 환경설정 BEST3! (0) | 2022.01.27 |
주피터 노트북 사용법, interact 모듈 사용하기 (0) | 2022.01.26 |
주피터 노트북 단축키 확인하고 쉽게 기억하는 방법은? (0) | 2022.01.26 |