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 merupakan bagian dari kursus
Menulis Function di Python
Instruksi 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 langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
@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())