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.
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.
# 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)
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.
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# 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()
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.
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ütztWenn 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 –
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()
Mit FileWriter(Dateiname) wird ein neues FileWriter-Objekt erstellt und __enter__() aufgerufen.
__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.
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# 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")
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.
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!