Context manager pro otevírání souborů jen pro čtení
Máš spoustu datových souborů pro svůj příští deep learning projekt, jejichž sběr a čištění ti zabraly měsíce. Bylo by katastrofální nechtěně přepsat jeden z těchto souborů při načítání pro trénování modelu – proto se rozhodneš vytvořit verzi context manageru open() jen pro čtení, kterou budeš v projektu používat.
Standardní context manager open():
- přijme název souboru a režim (
'r'pro čtení,'w'pro zápis nebo'a'pro přidávání) - otevře soubor pro čtení, zápis nebo přidávání
- předá řízení zpět do kontextu spolu s referencí na soubor
- počká, až kontext skončí
- a pak soubor před ukončením zavře
Tvůj context manager bude fungovat stejně, až na to, že bude jako argument přijímat pouze název souboru a soubor otevře výhradně pro čtení.
Toto cvičení je součástí kurzu
Writing Functions in Python
Pokyny k cvičení
- Předej řízení z
open_read_only()do bloku kontextu tak, aby byl objektread_only_filepřiřazen domy_file. - Pomocí metody
.close()objekturead_only_filezajisti, aby po sobě nezůstávaly otevřené soubory.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
@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())