본문 바로가기

Python

[Python] 파이썬 with as 키워드

반응형

파이썬의 with...as 구문은 파일 스트림을 다루는데 있어서 파이썬에서 제공하는 강력한 기능 중 하나입니다. 파일을 다루는 처리를 할때는 필수적으로 파일 오픈(open) 파일 닫기(close) 과정을 거치게 됩니다. 하지만 코드가 복잡해지면서 개발자는 파일을 열어놓고 닫지 않는 실수를 할 경우가 생기게 됩니다. with ... as 구문을 사용하게 되면 파일을 열고 해당 구문이 끝나면 자동으로 닫히게 되어서 이러한 실수를 줄일 수 있습니다. 문법은 아래와 같습니다.

with open(파일 경로, 모드) as 파일 객체:

    처리 코드

with open("sample.txt", "w") as file:
	file.write("It's simple code")

위 코드는 close함수가 없지만 with as 구문을 빠져나가게 되면 자동으로 close() 함수를 호출하여 파일을 닫습니다. with as 구문은 이처럼 파일 스트림을 손쉽게 다루는 경우에 유용하지만 네트워크 스트림을 다루는 소켓 프로그래밍과 같은 곳에서도 활용할 수 있습니다.

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.bind(ADDR)      # address binding
    s.listen()      # listen
    while True:
        c_socket, c_addr = s.accept()
        msg = c_socket.recv(SIZE)
        print("from : {}  message : {}".format(c_addr,msg))
        c_socket.sendall("Hello!".encode())
        c_socket.close()

위는 클라이언트의 응답을 받아 처리하는 간단한 예제코드인데요. 이 코드에서 처럼 소켓을 열고 닫을때 with as 구문을 사용할 수 있습니다. 파일입출력과 마찬가지로 소켓의 close() 메소드를 따로 호출하지 않아도 자동으로 호출이됩니다.

 

 

반응형