ComenzarEmpieza gratis

Un gestor de contexto open() de sólo lectura

Tienes un montón de archivos de datos para tu próximo proyecto de aprendizaje profundo que te ha llevado meses recopilar y limpiar. Sería terrible que sobrescribieras accidentalmente uno de esos archivos al intentar leerlo para entrenarte, así que decides crear una versión de sólo lectura del gestor de contextos open() para utilizarla en tu proyecto.

El gestor de contexto habitual de open():

  • toma un nombre de archivo y un modo ('r' para leer, 'w' para escribir o 'a' para añadir)
  • abre el archivo para leerlo, escribirlo o añadirlo
  • devuelve el control al contexto, junto con una referencia al archivo
  • espera a que termine el contexto
  • y luego cierra el archivo antes de salir

Tu gestor contextual hará lo mismo, salvo que sólo tomará el nombre del archivo como argumento y sólo abrirá el archivo para leerlo.

Este ejercicio forma parte del curso

Escribir funciones en Python

Ver curso

Instrucciones de ejercicio

  • Cede el control de open_read_only() al bloque de contexto, asegurándote de que el objeto read_only_file se asigna a my_file.
  • Utiliza el método .close() de read_only_file para asegurarte de que no dejas archivos abiertos por ahí.

Ejercicio interactivo práctico

Pruebe este ejercicio completando este código de muestra.

@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())
Editar y ejecutar código