Heim  >  Artikel  >  Backend-Entwicklung  >  Wozu dient die WITH-Anweisung in Python?

Wozu dient die WITH-Anweisung in Python?

王林
王林nach vorne
2023-08-18 22:53:141808Durchsuche

Wozu dient die WITH-Anweisung in Python?

In diesem Artikel lernen wir die „with“-Anweisung in Python und ihre Verwendung kennen.

  • In Python ersetzt die with-Anweisung den Try-Catch-Block auf prägnante Weise.

  • Noch wichtiger ist, dass die Ressource sofort nach der Verarbeitung geschlossen wird.

  • Die Verwendung der with-Anweisung zum Lesen oder Schreiben von Dateien ist eine häufige Verwendung.

  • Ein Kontextmanager ist eine Funktion oder Klasse, die die with-Anweisung unterstützt. Mit Kontextmanagern können Sie Ressourcen jederzeit öffnen und schließen.

  • Zum Beispiel ist die Funktion open() ein Kontextmanager. Wenn Sie die Funktion open() mit der with-Anweisung aufrufen, wird die Datei nach der Verarbeitung der Datei automatisch geschlossen.

Verwenden Sie die „with“-Anweisung, um Dateien zu öffnen und zu lesen

Algorithmus (Schritte)

Hier sind die Algorithmen/Schritte zum Ausführen der erforderlichen Aufgabe:

  • Verwenden Sie die Funktion open() (die eine Datei öffnet und als Ergebnis ein Dateiobjekt zurückgibt), um eine Textdatei im schreibgeschützten Modus zu öffnen, indem Sie ihr den Dateinamen und den Modus als Parameter übergeben („r „hier bedeutet schreibgeschützter Modus).

with open(inputFile, 'r') as fileData:
  • Verwenden Sie die Funktion readlines(), um die Liste der Zeilen einer bestimmten Textdatei abzurufen.

file.readlines(hint)
  • Verwenden Sie eine for-Schleife, um jede Zeile einer bestimmten Textdatei zu durchlaufen.

  • Drucken Sie die entsprechenden Zeilen der Textdatei.

Die chinesische Übersetzung von

Beispiel

lautet:

Beispiel

# input file path
inputFile = "ExampleTextFile.txt"
print("The lines of a given Text File are:")

# Opening the given file in read-only mode.
with open(inputFile, 'r') as fileData:
   
   # Read the above file lines using readlines()
   fileLines = fileData.readlines()
   
   # Traverse in the each line of the text file
   for textLine in fileLines:
      
      # printing each line
      print(textLine)

Ausgabe

The lines of a given Text File are:
Good Morning this is Tutorials Point sample File
Consisting of Specific
Good source codes in Python,Seaborn,Scala
Summary and Explanation

Verwenden Sie das Schlüsselwort „with“ nicht nur, um eine Datei im Lesemodus zu öffnen, sondern auch, um der geöffneten Datei einen Alias ​​zuzuweisen.

Verwenden Sie die „with“-Anweisung anstelle des Try-Catch-Blocks

In Python können Sie die Try-Catch-Fehlerbehandlung verwenden, um Dateien zu öffnen und zu schreiben.

Unter der Haube ersetzt die with-Anweisung den folgenden Try-Catch-Block

Die chinesische Übersetzung von

Beispiel

lautet:

Beispiel

# opening the file in write mode using the open() function
inputFile = open("tutorialsFile.txt", "w")

# handling the exceptions using try-catch blocks
try:
   # writing text into the file
   inputFile.write("Hello tutorialsPoint python")
finally:
   # closing the file
   inputFile.close()

Ausgabe

Hello tutorialsPoint python

Diese App öffnet die Datei tutorialsFile.txt. Wenn keine solche Datei vorhanden ist, wird sie vom Programm erstellt. Der Code schreibt dann „Hallo TutorialsPoint Python“ in die Datei und schließt dann die Datei.

Mit dieser Methode gibt es kein Problem. Diese Aufgabe lässt sich jedoch eleganter mit der with-Anweisung lösen.

Jetzt erstellen wir das vorherige Beispiel mit der with-Anweisung −

# opening a file in write mode with an alias name using with statement
with open("tutorialsFile.txt", "w") as file:
   
   # writing text into the file
   file.write("Hello tutorialsPoint python")

Dies vereinfacht den Code, da die with-Anweisung das Schließen der Datei nach ihrer Verwendung übernehmen kann. Aus diesem Grund ist die Verwendung der with-Anweisung im Allgemeinen die bevorzugte Technik zum Öffnen von Dateien in Python.

Python „mit“ Anweisung und Kontextmanager

Beim Verarbeiten von Dateien denken Sie vielleicht, dass die with-Anweisung nur für die Funktion open() gilt. Dies ist jedoch nicht der Fall. Es können auch Klassen und Objekte erstellt werden, die die with-Anweisung unterstützen.

Ein Kontextmanager ist eine Klasse oder Funktion, die die with-Anweisung

unterstützt

Wenn Sie Ihrem Projekt Ressourcenmanagement hinzufügen möchten, können Sie Kontextmanager verwenden. Um als Kontextmanager zu gelten, muss eine Klasse die folgenden zwei Methoden implementieren –

  • __enter__()
  • __exit__()

Nach der Implementierung dieser Methoden können Sie die with-Anweisung für Objekte der Klasse verwenden.

  • Wenn die with-Anweisung aufgerufen wird, wird die Methode __enter__() aufgerufen.

  • Wenn Sie den Bereich des with-Blocks verlassen, wird die Methode __exit__() aufgerufen.

Erstellen Sie einen Kontextmanager zum Schreiben von Dateien

Die Funktion dieser Klasse ist dieselbe wie die der open()-Methode

class FileWriter(object):
   def __init__(self, fileName):
      self.fileName = fileName

   def __enter__(self):
      self.file = open(self.fileName, "w")
      return self.file

   def __exit__(self, exception_type, exception_value, traceback):
      self.file.close()

So verwenden Sie die oben genannten Programme

  • Mit FileWriter(Dateiname) wird ein neues FileWriter-Objekt erstellt und __enter__() aufgerufen.

  • Die Methode
  • __enter__() wird verwendet, um die erforderlichen Ressourcen zu initialisieren. In diesem Fall wird eine Textdatei geöffnet. Es muss auch den Deskriptor der Ressource und damit der geöffneten Datei zurückgeben.

  • as file weist die Datei einer Variablen namens file zu.

  • Abschließend fügen Sie im with-Block nach dem Doppelpunkt den Code ein, der mit der abgerufenen Ressource ausgeführt wird.

  • Wenn diese Codeausführung abgeschlossen ist, wird die Methode __exit__() automatisch aufgerufen. In diesem Fall wird die Datei geschlossen.

Wie schreibe ich meine Kontextmanager-Methoden?

Der zuvor geschriebene Kontextmanager ist eine Klasse, aber was ist, wenn Sie eine Kontextmanagermethode erstellen möchten, die der Funktion open() ähnelt? Mit Python können Sie auch Kontextmanagermethoden schreiben.

Konvertieren Sie eine Methode mithilfe des Moduls contextlib in einen Kontextmanager.

Die chinesische Übersetzung von

Beispiel

lautet:

Beispiel

# importig the contextmanager from contextlib module
from contextlib import contextmanager

# Marking the file_open() function as a context manager
# using contextmanager decorator
@contextmanager
def file_open(name):
   try:
      file = open(name, "w")
      yield file
   finally:
      file.close()

with file_open("exampleFile.txt") as file:
   file.write("Hello tutorialsPoint python")
Die Übersetzung von

exampleFile.txt

lautet:

exampleFile.txt

Hello tutorialsPoint python

Hier haben wir eine neue Funktion mit dem Schlüsselwort with erstellt und ihr einen Namen gegeben. Wenn wir diese Funktion aufrufen, versucht sie, die angegebene Datei im Schreibmodus zu öffnen und gibt das Ergebnis zurück. Tritt ein Fehler auf, wird die Datei geschlossen.

Fazit

In diesem Artikel haben wir anhand von Beispielen gelernt, wie man die with-Anweisung verwendet.

Das obige ist der detaillierte Inhalt vonWozu dient die WITH-Anweisung in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen