MulaiMulai sekarang secara gratis

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

Lihat Kursus

Petunjuk latihan

  • Serahkan kontrol dari open_read_only() ke blok konteks, memastikan bahwa objek read_only_file ditetapkan ke my_file.
  • Gunakan metode .close() milik read_only_file untuk 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())
Edit dan Jalankan Kode