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 só 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
Instruções de exercício
- Passe o controle de
open_read_only()
para o bloco de contexto, garantindo que o objetoread_only_file
seja atribuído amy_file
. - Use o método
.close()
doread_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())