파이썬의 with...as 구문은 파일 스트림을 다루는데 있어서 파이썬에서 제공하는 강력한 기능 중 하나다. 파일을 다루는 처리를 할때는 필수적으로 파일 오픈(open) 파일 닫기(close) 과정을 거치게 된다. 하지만 코드가 복잡해지면서 개발자는 파일을 열어놓고 닫지 않는 실수를 할 경우가 생기게 된다. with ... as 구문을 사용하게 되면 파일을 열고 해당 구문이 끝나면 자동으로 닫히게 되어서 이러한 실수를 줄일 수 있다.
[문법]
with open('file.txt') as file_data:
# 기본적으로 사용하는 함수를 with문 안에 사용하면 되며
# with문을 나올 때 close를 자동으로 불러줍니다.
print(file_data.readline(), end="")
|
cs |
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()
|
cs |