읽기 전용 open() 컨텍스트 관리자
몇 달 동안 수집하고 정제한 다음 deep learning 프로젝트용 데이터 파일이 여러 개 있다고 합시다. 학습을 위해 읽어들이려다가 실수로 그중 하나를 덮어쓰면 정말 곤란하겠죠. 그래서 프로젝트에서 사용할 읽기 전용 버전의 open() 컨텍스트 관리자를 만들기로 했습니다.
일반적인 open() 컨텍스트 관리자는 다음을 수행합니다.
- 파일 이름과 모드(
'r'는 읽기,'w'는 쓰기,'a'는 추가)를 받습니다. - 파일을 읽기, 쓰기, 또는 추가 모드로 엽니다.
- 파일에 대한 참조와 함께 제어권을 컨텍스트에 반환합니다.
- 컨텍스트가 끝날 때까지 기다립니다.
- 종료하기 전에 파일을 닫습니다.
여러분의 컨텍스트 관리자는 위와 동일하게 동작하되, 인자로 파일 이름만 받고 파일을 읽기 전용으로만 열어야 합니다.
이 연습은 강의의 일부입니다
Python으로 함수 작성하기
연습 안내
open_read_only()에서 컨텍스트 블록으로 제어권을 넘기고,read_only_file객체가my_file에 할당되도록 하세요.- 열린 파일이 남지 않도록
read_only_file의.close()메서드를 사용해 파일을 확실히 닫으세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
@contextlib.contextmanager
def open_read_only(filename):
"""Open a file in read-only mode.
Args:
filename (str): The location of the file to read
Yields:
file object
"""
read_only_file = open(filename, mode='r')
# Yield read_only_file so it can be assigned to my_file
____ ____
# Close read_only_file
____.____()
with open_read_only('my_file.txt') as my_file:
print(my_file.read())