So führen Sie Python -Eingangs-/Ausgabeberationen in Dateien mit Python Open Function durch

So führen Sie Python -Eingangs-/Ausgabeberationen in Dateien mit Python Open Function durch

Die Manipulation von Dateien ist eine Operation, die früher oder später in unseren Programmen durchgeführt werden muss. Der Python integriert offen Funktion gibt zurück a Dateiobjekt, Dadurch können wir mit Dateien in verschiedenen Modi interagieren: Wir werden sie in diesem Artikel sehen.

In diesem Python -Tutorial lernen Sie:

  • So verwenden Sie die Python Open -Funktion.
  • Was sind die verschiedenen Betriebsarten, die mit der Python Open -Funktion verwendet werden können.
  • So interagieren Sie mit einem Dateiobjekt.
  • Warum ist wichtig, ein Dateiobjekt zu schließen und wie es geht?.

Softwareanforderungen und Konventionen verwendet

Softwareanforderungen und Linux -Befehlszeilenkonventionen
Kategorie Anforderungen, Konventionen oder Softwareversion verwendet
System OS-unabhängig
Software Python3
Andere Keine besonderen Berechtigungen erforderlich.
Konventionen # - erfordert, dass gegebene Linux -Befehle mit Root -Berechtigungen entweder direkt als Stammbenutzer oder mit Verwendung von ausgeführt werden können sudo Befehl
$ - Erfordert, dass die angegebenen Linux-Befehle als regelmäßiger nicht privilegierter Benutzer ausgeführt werden können
>>> - Python -Befehle, die in einer interaktiven Shell ausgeführt werden sollen

Python -Eingangs- und Ausgangsanweisungen

Es gibt viele Gründe, warum ein Programm mit Dateien interagieren muss: Lesen von Konfigurationen und Einstellungen, die das Verhalten des Programms selbst beeinflussen oder möglicherweise Daten anhalten. In diesem Tutorial werden wir sehen, wie solche Aufgaben erledigt werden, indem wir die Python Open -Funktion verwenden und mit interagieren Dateiobjekte.



Die python offene Funktion

Bevor wir mit dem Lesen oder Schreiben von Dateien beginnen, müssen wir lernen, wie wir darauf zugreifen können. Die Python Open -Funktion öffnet eine Datei und gibt a zurück Dateiobjekt, Anheben eines Oserror Ausnahme, wenn auf die Ressource nicht zugegriffen werden kann. Die Funktion hat nur ein obligatorisches Argument, Datei, Welches ist die Zeichenfolge oder das Byte-Objekt, das den Pfad der zu öffnenden Datei darstellt:

>>> foBject = open ('linuxconfig.txt') 
Kopieren

Lesenmodus - 'R'

Wir haben die geöffnet Linuxconfig.txt Datei, und das resultierende Dateiobjekt wird nun von referenziert von fobjekt. Es ist ein Python Dateiobjekt was Methoden wie implementiert schreiben Und lesen. Was ist, wenn das Linuxconfig.txt Datei existierte nicht? A FilenotFoundError Ausnahme würde eingerichtet werden:

>>> foBject = open ('linuxconfig.TXT ') TraceBack (letzte Anruf Letzte Anruf): Datei "", Zeile 1, in  FilenotFoundError: [Errno 2] Keine solche Datei oder Verzeichnis: 'LinuxConfig.txt' 
Kopieren

Wie wir erst oben gesagt haben, ist das einzige obligatorische Argument der Python Open -Funktion Datei. Bei Verwendung wie im obigen Beispiel arbeitet die Funktion in Textmodus und eine Datei wird nur zum Lesen geöffnet. Das ausführliche Äquivalent zu dem, was wir oben getan haben, ist:

>>> foBject = open ('linuxconfig.txt ',' rt ') 
Kopieren

Das zweite Argument der Funktion ist das Modus. In diesem Fall, 'rt', bei dem die 'R' steht für lesen und das 'T' Gibt an, dass wir im Textmodus arbeiten. Es ist auch möglich, Dateien im Binärmodus zu öffnen, wodurch ersetzt wird 'T' mit 'B': In diesem Fall wird Bytes Inhalt ohne Codierung zurückgegeben. Seit 'T' ist der Standardmodus von nun an, wir werden ihn weglassen. Zum Lesen des Inhalts der Datei, die wir beispielsweise verwenden können, die lesen Methode. Es wird alle Dateiinhalte als Zeichenfolge zurückgegeben:

>>> fobject.Read () 'Linuxconfig ist großartig!\N' 
Kopieren

Wenn im Readmodus ein Schreiben Versuch, in die Datei zu schreiben io.Nicht unterstützte Operation Ausnahme:

>>> fobject.Schreiben ('Linuxconfig ist großartig!') Traceback (letzte Anruflast): Datei "", Zeile 1, in  io.Nicht unterstützte Operation: nicht beschreibbar 
Kopieren

Offensichtlich ist dies nicht der einzige verfügbare Modus. Lass uns die anderen sehen.

Schreibmodus - 'W'

Beim Angeben 'W' als Wert der Modus Argument der offen Funktion, wenn die Datei existiert, ist sie zuerst gekürzt (Sein gesamtes Inhalt wird verworfen) und dann für das Schreiben geöffnet; Wenn die Datei nicht vorhanden ist, wird sie erstellt. In diesem Fall verwenden wir die schreiben Methode des Dateiobjekts:

>>> foBject = open ('linuxconfig.txt ',' w ') >>> fobject.Schreiben ('Wir haben gerade in die Datei geschrieben!') 26 >>> fobject.schließen() 
Kopieren

Wir haben die Datei zum Schreiben geöffnet, als wir die verwendeten schreiben Methode des Dateiobjekts, das die Zeichenfolge schreibt und die Anzahl der geschriebenen Zeichen zurückgibt. 26 In diesem Fall haben wir schließlich die verwendet schließen Methode zum Schließen des Objekts: Dieser Schritt ist wirklich wichtig, da der Schreibvorgang nur dann wirksam wird, wenn der Inhalt der Datei gespült wird (wir werden die Bedeutung des Schließens eines Dateiobjekts am Ende des Tutorials sehen). Wenn wir jetzt den Inhalt der Datei untersuchen, sehen wir, dass der vorherige Inhalt überschrieben wurde und nur die Zeichenfolge enthält:

'Wir haben gerade in die Datei geschrieben!''

Wie oben, wenn wir versuchen, eine Operation durchzuführen, die von der Betriebsart nicht zulässig ist, wird eine Ausnahme angelegt. In diesem Fall erhalten wir, wenn wir versuchen, den Inhalt der Datei zu lesen, das folgende Ergebnis:

>>> foBject = open ('linuxconfig.txt ',' w ') >>> fobject.Read () TraceBack (letzte Anruf Last): Datei "", Zeile 1 in IO.Nicht unterstützte Operation: nicht lesbar 
Kopieren

Anhängen an eine Datei: 'a' Modus

Was ist, wenn wir uns einer Datei anhängen und ihren aktuellen Inhalt behalten möchten?? Wir müssen die benutzen 'A' (anhängen) Modus. Wenn dieser Modus verwendet wird, wird sie zum Schreiben geöffnet und der Stream am Ende positioniert. Auf diese Weise bleibt der vorherige Inhalt der Datei erhalten. Wenn die Datei nicht vorhanden ist, wird sie erstellt:

>>> foBject = open ('linuxconfig.txt ',' a ') >>> fobject.Schreiben ('Angehängter Text!') 14 >>> fobject.schließen() 
Kopieren

Wir haben die Datei in geöffnet 'A' Modus und schreiben Sie die Zeichenfolge "angehängter Text" in die Datei. Der vorherige Inhalt wurde nicht abgeschnitten:

LinuxConfig ist großartig! Angehängter Text! 

Der "X" -Modus - exklusive Erstellung

Dieser Öffnungsmodus ist nur in Python3 verfügbar. Wenn es verwendet wird, a DateiExisterror Es wird angehoben, wenn die Datei bereits vorhanden ist. Wenn die Datei nicht vorhanden ist, wird sie zum Schreiben erstellt und geöffnet:

FileObject = Open ('LinuxConfig.TXT ',' x ') Traceback (letztes Anruf letztes): Datei "", Zeile 1, in  FileExisterror: [Errno 17] Datei existiert: 'LinuxConfig.txt' 
Kopieren

Jedes Mal, wenn wir etwas schreiben, wird es dem vorherigen Inhalt angehängt, bis wir das Dateiobjekt schließen:

>>> FileObject = Open ('LinuxConfig1.txt ',' x ') >>> FileObject.Write ('LinuxConfig ist wieder großartig \ n') >>> FileObject.Schreiben ('Ich wiederhole: Linuxconfig ist großartig!\ n ') >>> FileObject.schließen() 
Kopieren

Nach dem Ausführen des obigen Codes wird der neue Dateiinhalt sein:

LinuxConfig ist großartig! Ich wiederhole: Linuxconfig ist großartig! 

Der '+' Charakter

Wir haben die grundlegenden Modi gesehen, die mit dem verwendet werden können offen Funktion und wie sie funktionieren. Durch Anhängen der '+' ' Charakter für jeden von ihnen können wir neue Verhaltensweisen erhalten.

Der "R+" -Modus

Beim Anhängen des Zeichens '+' an den 'R' -Modus ('R+') wird eine Datei sowohl zum Lesen als auch zum Schreiben geöffnet. Eine Ausnahme wird ausgelöst, wenn die Datei nicht vorhanden ist. Der Stream ist am Anfang der Datei positioniert. Wenn also etwas geschrieben wird, wird er den vorherigen Inhalt überschreiben. Wenn wir uns in diesem Modus befinden, aber trotzdem möchten wir, dass der neue Inhalt angehängt wird und das existentieren, müssen wir die aktuelle Position mit dem ändern suchen Methode des Dateiobjekts vor dem Schreiben folgendermaßen:

>>> FileObject = Open ('LinuxConfig.txt ',' r+'): >>> FileObject.Suchen Sie (0,2) >>> FileObject.Schreiben ('Dieser Text wird angehängt') >>> FileObject.schließen() 
Kopieren

Der suchen Methode nimmt zwei Argumente ein: das erste ist die Offset, Die zweite ist die Position, aus der der Offset berechnet werden sollte, wo 0 (Der Standard, wenn dieses Argument weggelassen wird) ist der Beginn der Datei, 1 ist der aktuelle Offset und 2 ist das Ende der Datei. In diesem Fall haben wir einen Versatz von 0 aus dem Ende der Datei verwendet, weshalb wir zum Ende der Datei selbst verschoben werden. Beachten io.Nicht unterstützte Operation Ausnahme, da es unmöglich ist, eine, eine end-relative Such von ungleich Null zu machen.

Der "W+" -Modus

Dieser Modus funktioniert so: Die Datei wird sowohl zum Lesen als auch zum Schreiben geöffnet. Wenn die Datei existiert, wird ihr Inhalt abgeschnitten, andernfalls wird die Datei erstellt. Genau wie im vorherigen Beispiel ist es möglich, die Datei zu lesen und zu schreiben. Es gibt jedoch zwei große Unterschiede IT), der zweite ist, dass die Datei erstellt wird, wenn sie nicht existiert.



Der 'A+' -Modus

Wenn wir diesen Modus mit der Funktion Python Open angeben, erhalten wir das folgende Verhalten: Genau wie in den vorherigen Beispielen wird die Datei sowohl für das Lesen als auch für das Schreiben geöffnet. Der Stream ist jedoch positioniert Am Ende der Datei, so dass alle neuen Inhalte, die sie an das existieren, beigefügt sind.

Es sollten zwei Dinge beachtet werden: Da der Stream am Ende der Datei positioniert ist, wenn wir versuchen, die zu verwenden lesen Methode auf dem Dateiobjekt Um den aktuellen Inhalt zu erhalten, wird eine leere Zeichenfolge zurückgegeben. Um den Inhalt lesen zu können, sollten wir zunächst zum Beginn der Datei wechseln, wobei die Suchmethode folgendermaßen verwendet wird:

FileObject.suchen (0)
Kopieren

Die zweite, sehr wichtige Sache, die zu bemerken ist, ist, dass bei der Verwendung dieses Modus, auch wenn wir zum Beginn der Datei genau wie im obigen Beispiel der Fall sind, und einen Schreiben, den vorhandenen Inhalt, den sie nicht verloren hat: der neue Inhalt Es ist immer angehängt.

Schließen des Dateiobjekts

Nachdem wir mit unserem Dateiobjekt fertig gearbeitet haben, müssen wir uns immer daran erinnern, es aus mehreren Gründen zu schließen. In primis, da einige Operationen wie das Schreiben nur dann effektiv werden, wenn das Dateiobjekt geschlossen und sein Inhalt gespült wird, zweitsebüßer zu freien Systemressourcen und für Code -Klarheit. Es gibt zwei Möglichkeiten, wie wir ein Dateiobjekt schließen können: Der erste ist, indem wir das anrufen schließen Methode im Dateiobjekt, wie wir oben gesehen haben. Der zweite ist die Verwendung der Verwendung der mit Stellungnahme:

mit Open ('Linuxconfig.txt ',' r ') als FileObject: content = FileObject.Read () # Führen Sie die erforderlichen Operationen aus 
Kopieren

Was passiert in diesem Fall?? Verwenden dieser Anweisung den Ausdruck neben mit, in diesem Fall Open ('Linuxconfig.txt ',' r '), wird in ein Dateiobjekt bewertet, das das Kontext -Manager -Protokoll unterstützt, da es das implementiert __eingeben__ Und __Ausfahrt__ Methoden. Das Dateiobjekt wird dann aliaisiert FileObject. Nachdem der im Block enthaltene Code ausgeführt wurde, ist der __Ausfahrt__ Die Methode des Dateiobjekts wird automatisch aufgerufen und das Dateiobjekt geschlossen. Die Verwendung eines Kontextmanagers ist wirklich nützlich, da das Objekt immer geschlossen wird.

Schlussfolgerungen

In diesem Tutorial haben wir gelernt, wie man den integrierten Python benutzt offen Funktion zum Erstellen eines Dateiobjekts, das zur Interaktion mit einer Datei verwendet wird. Wir haben die verschiedenen Modi gesehen, die an die Funktion übergeben werden können und wie sie das Verhalten des Dateiobjekts ändern können. Schließlich haben wir gesehen, warum es wichtig ist, ein Dateiobjekt immer zu schließen, nachdem wir damit fertig arbeiten, wie wir es tun können, indem wir die verwenden schließen Methode und wie es automatisch durchgeführt werden kann, wenn wir die verwenden mit Aussage und ein Kontextmanager. Wie immer vorgeschlagen, können Sie die offizielle Dokumentation konsultieren, um Ihr Wissen weiter zu verbessern.

Weitere pythonbezogene Konzepte oder unser Lesen und Schreiben von Dateien mit Python Guide finden Sie auch unser umfangreicheres Python -Tutorial für mehr Python -bezogene Konzepte.

Verwandte Linux -Tutorials:

  • Umgang mit Benutzereingaben in Bash -Skripten
  • Mastering -Bash -Skriptschleifen beherrschen
  • Linux -Konfigurationsdateien: Top 30 am wichtigsten
  • Big Data Manipulation zum Spaß und Gewinn Teil 1
  • Big Data Manipulation zum Spaß und Gewinn Teil 3
  • Eine Einführung in Linux -Automatisierung, Tools und Techniken
  • Dinge zu installieren auf Ubuntu 20.04
  • Mint 20: Besser als Ubuntu und Microsoft Windows?
  • Big Data Manipulation zum Spaß und Gewinn Teil 2
  • So montieren Sie das ISO -Bild unter Linux