파이썬 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를 열고 닫을 때 사용하면 유용합니다. 다른 작업에도 유용하게 사용할 수 있는 방법이 있다면 공유해주시면 좋겠습니다.

 

파이썬 IDE 인기 순위와 장단점, 한국에서 선호도는?!

파이썬 IDE는 여러 가지 종류가 있습니다. 하지만 한 번 손에 익숙해지면 다른 IDE로 넘어가기가 쉽지 않습니다. 그래서 어느 정도 파이썬이 익숙해지면, 어떤 IDE를 사용할지 고민

aplab.tistory.com

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기