Kom igångKom igång gratis

En skrivskyddad open()-kontexthanterare

Du har en samling datafiler för ditt nästa djupinlärningsprojekt – filer som tog månader att samla in och rensa. Det vore katastrofalt om du råkade skriva över någon av dem när du försöker läsa in dem för träning. Därför bestämmer du dig för att skapa en skrivskyddad version av kontexthanteraren open() att använda i projektet.

Den vanliga kontexthanteraren open():

  • tar ett filnamn och ett läge ('r' för läsning, 'w' för skrivning eller 'a' för att lägga till)
  • öppnar filen för läsning, skrivning eller tillägg
  • lämnar kontrollen tillbaka till kontexten, tillsammans med en referens till filen
  • väntar tills kontexten är klar
  • och stänger sedan filen innan den avslutas

Din kontexthanterare gör samma sak, förutom att den bara tar filnamnet som argument och enbart öppnar filen för läsning.

Den här övningen är en del av kursen

Att skriva funktioner i Python

Visa kurs

Övningsinstruktioner

  • Lämna kontrollen från open_read_only() till kontextblocket och se till att objektet read_only_file tilldelas till my_file.
  • Använd .close()-metoden på read_only_file för att undvika att lämna öppna filer efter dig.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

@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())
Redigera och kör kod