ComeçarComece gratuitamente

Um gerenciador de contexto open() somente de leitura

Você tem um monte de arquivos de dados para o seu próximo projeto de aprendizagem profunda que levou meses para coletar e limpar. Seria terrível se você acidentalmente sobrescrevesse um desses arquivos ao tentar lê-lo para treinamento, então você decide criar uma versão somente leitura do gerenciador de contexto open() para usar em seu projeto.

O gerenciador de contexto regular open():

  • recebe um nome de arquivo e um modo ('r' para leitura, 'w' para gravação ou 'a' para anexação)
  • abre o arquivo para leitura, gravação ou inclusão
  • devolve o controle ao contexto, juntamente com uma referência ao arquivo
  • aguarda a conclusão do contexto
  • e, em seguida, fecha o arquivo antes de sair

Seu gerenciador de contexto fará a mesma coisa, exceto pelo fato de que ele receberá o nome do arquivo como argumento e só abrirá o arquivo para leitura.

Este exercício faz parte do curso

Como escrever funções em Python

Ver Curso

Instruções de exercício

  • Passe o controle de open_read_only() para o bloco de contexto, garantindo que o objeto read_only_file seja atribuído a my_file.
  • Use o método .close() do read_only_file para garantir que você não deixe arquivos abertos por aí.

Exercício interativo prático

Experimente este exercício preenchendo este código de exemplo.

@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 e executar código