Manajer konteks open() baca-saja
Anda memiliki banyak berkas data untuk proyek deep learning berikutnya yang menghabiskan waktu berbulan-bulan untuk dikumpulkan dan dibersihkan. Akan sangat buruk jika tanpa sengaja Anda menimpa salah satu berkas tersebut saat mencoba membacanya untuk pelatihan, sehingga Anda memutuskan untuk membuat versi baca-saja dari manajer konteks open() untuk digunakan dalam proyek Anda.
Manajer konteks open() biasa:
- menerima nama berkas dan mode (
'r'untuk membaca,'w'untuk menulis, atau'a'untuk menambahkan/append) - membuka berkas untuk membaca, menulis, atau menambahkan
- menyerahkan kontrol kembali ke konteks beserta referensi ke berkas tersebut
- menunggu hingga konteks selesai
- lalu menutup berkas sebelum keluar
Manajer konteks Anda akan melakukan hal yang sama, kecuali ia hanya akan menerima nama berkas sebagai argumen dan hanya akan membuka berkas untuk membaca.
Latihan ini adalah bagian dari kursus
Menulis Function di Python
Petunjuk latihan
- Serahkan kontrol dari
open_read_only()ke blok konteks, memastikan bahwa objekread_only_fileditetapkan kemy_file. - Gunakan metode
.close()milikread_only_fileuntuk memastikan Anda tidak membiarkan berkas tetap terbuka.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
@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())