Trình quản lý ngữ cảnh open() chỉ đọc
Bạn có một loạt tệp dữ liệu cho dự án deep learning tiếp theo, mất hàng tháng để thu thập và làm sạch. Sẽ thật tệ nếu bạn vô tình ghi đè một trong những tệp đó khi cố đọc nó để huấn luyện, nên bạn quyết định tạo một phiên bản chỉ đọc của trình quản lý ngữ cảnh open() để dùng trong dự án.
Trình quản lý ngữ cảnh open() thông thường:
- nhận tên tệp và chế độ (
'r'để đọc,'w'để ghi, hoặc'a'để nối thêm) - mở tệp để đọc, ghi, hoặc nối thêm
- chuyển quyền điều khiển về cho khối ngữ cảnh, kèm theo một tham chiếu đến tệp
- đợi khối ngữ cảnh thực thi xong
- và sau đó đóng tệp trước khi thoát
Trình quản lý ngữ cảnh của bạn sẽ làm điều tương tự, ngoại trừ việc nó chỉ nhận tên tệp làm đối số và chỉ mở tệp ở chế độ đọc.
Bài tập này là một phần của khóa học
Viết hàm trong Python
Hướng dẫn bài tập
- Chuyển quyền điều khiển từ
open_read_only()sang khối ngữ cảnh, đảm bảo đối tượngread_only_fileđược gán chomy_file. - Dùng phương thức
.close()củaread_only_fileđể đảm bảo bạn không để sót các tệp đang mở.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
@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())