Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Python

Python-Datei-I/O

Python-Datei-I/O

In diesem Lernprogramm erfahren Sie mehr über Python-Dateioperationen. Genauer gesagt, Öffnen einer Datei, Lesen aus ihr, Schreiben in sie, Schließen und verschiedene Dateimethoden, die Sie kennen sollten.

Video:Lesen und Schreiben von Dateien in Python

Dateien

Dateien sind benannte Speicherorte auf der Festplatte, um zugehörige Informationen zu speichern. Sie dienen der dauerhaften Speicherung von Daten in einem nichtflüchtigen Speicher (z. B. Festplatte).

Da Random Access Memory (RAM) flüchtig ist (der seine Daten verliert, wenn der Computer ausgeschaltet wird), verwenden wir Dateien für die zukünftige Verwendung der Daten, indem wir sie dauerhaft speichern.

Wenn wir aus einer Datei lesen oder in sie schreiben wollen, müssen wir sie zuerst öffnen. Wenn wir fertig sind, muss es geschlossen werden, damit die mit der Datei verknüpften Ressourcen freigegeben werden.

Daher findet in Python eine Dateioperation in der folgenden Reihenfolge statt:

  1. Öffnen Sie eine Datei
  2. Lesen oder schreiben (Vorgang ausführen)
  3. Datei schließen

Öffnen von Dateien in Python

Python hat einen eingebauten open() Funktion zum Öffnen einer Datei. Diese Funktion gibt ein Dateiobjekt zurück, auch Handle genannt, da es verwendet wird, um die Datei entsprechend zu lesen oder zu modifizieren.

>>> f = open("test.txt")    # open file in current directory
>>> f = open("C:/Python38/README.txt")  # specifying full path

Wir können den Modus beim Öffnen einer Datei angeben. Im Modus geben wir an, ob wir r lesen wollen , schreiben Sie w oder fügen Sie a hinzu zur Datei. Wir können auch angeben, ob wir die Datei im Textmodus oder im Binärmodus öffnen möchten.

Standardmäßig wird im Textmodus gelesen. In diesem Modus erhalten wir Strings beim Lesen aus der Datei.

Auf der anderen Seite gibt der Binärmodus Bytes zurück, und dies ist der Modus, der verwendet werden sollte, wenn es sich um Nicht-Textdateien wie Bilder oder ausführbare Dateien handelt.

Modus Beschreibung
r Öffnet eine Datei zum Lesen. (Standard)
w Öffnet eine Datei zum Schreiben. Erstellt eine neue Datei, wenn sie nicht existiert, oder schneidet die Datei ab, wenn sie existiert.
x Öffnet eine Datei zur exklusiven Erstellung. Wenn die Datei bereits vorhanden ist, schlägt der Vorgang fehl.
a Öffnet eine Datei zum Anhängen am Ende der Datei, ohne sie abzuschneiden. Erstellt eine neue Datei, falls sie nicht existiert.
t Öffnet sich im Textmodus. (Standard)
b Öffnet im Binärmodus.
+ Öffnet eine Datei zum Aktualisieren (Lesen und Schreiben)
f = open("test.txt")      # equivalent to 'r' or 'rt'
f = open("test.txt",'w')  # write in text mode
f = open("img.bmp",'r+b') # read and write in binary mode

Im Gegensatz zu anderen Sprachen ist das Zeichen a impliziert nicht die Zahl 97, bis sie mit ASCII codiert wird (oder andere gleichwertige Kodierungen).

Darüber hinaus ist die Standardcodierung plattformabhängig. Unter Windows ist es cp1252 aber utf-8 unter Linux.

Wir dürfen uns also nicht auf die Standardcodierung verlassen, sonst verhält sich unser Code auf verschiedenen Plattformen unterschiedlich.

Wenn Sie also mit Dateien im Textmodus arbeiten, wird dringend empfohlen, den Kodierungstyp anzugeben.

f = open("test.txt", mode='r', encoding='utf-8')

Dateien in Python schließen

Wenn wir mit der Durchführung von Operationen an der Datei fertig sind, müssen wir die Datei ordnungsgemäß schließen.

Durch das Schließen einer Datei werden die Ressourcen freigegeben, die mit der Datei verknüpft waren. Dies geschieht mit dem close() in Python verfügbare Methode.

Python hat einen Garbage Collector, um nicht referenzierte Objekte zu bereinigen, aber wir dürfen uns nicht darauf verlassen, dass er die Datei schließt.

f = open("test.txt", encoding = 'utf-8')
# perform file operations
f.close()

Diese Methode ist nicht ganz ungefährlich. Wenn eine Ausnahme auftritt, während wir eine Operation mit der Datei ausführen, wird der Code beendet, ohne die Datei zu schließen.

Eine sicherere Methode ist die Verwendung eines try...finally-Blocks.

try:
   f = open("test.txt", encoding = 'utf-8')
   # perform file operations
finally:
   f.close()

Auf diese Weise garantieren wir, dass die Datei ordnungsgemäß geschlossen wird, selbst wenn eine Ausnahme ausgelöst wird, die den Programmfluss stoppt.

Der beste Weg, eine Datei zu schließen, ist die Verwendung von with Aussage. Dadurch wird sichergestellt, dass die Datei geschlossen wird, wenn der Block innerhalb des with Anweisung wird beendet.

Wir müssen close() nicht explizit aufrufen Methode. Dies geschieht intern.

with open("test.txt", encoding = 'utf-8') as f:
   # perform file operations

Schreiben in Dateien in Python

Um in Python in eine Datei zu schreiben, müssen wir sie in write w öffnen , hängen Sie a an oder exklusive Kreation x Modus.

Wir müssen mit dem w vorsichtig sein -Modus, da er die Datei überschreibt, wenn sie bereits vorhanden ist. Dadurch werden alle bisherigen Daten gelöscht.

Das Schreiben eines Strings oder einer Folge von Bytes (für Binärdateien) erfolgt mit dem write() Methode. Diese Methode gibt die Anzahl der in die Datei geschriebenen Zeichen zurück.

with open("test.txt",'w',encoding = 'utf-8') as f:
   f.write("my first file\n")
   f.write("This file\n\n")
   f.write("contains three lines\n")

Dieses Programm erstellt eine neue Datei namens test.txt im aktuellen Verzeichnis, wenn es nicht existiert. Wenn es existiert, wird es überschrieben.

Wir müssen die Newline-Zeichen selbst einfügen, um die verschiedenen Zeilen zu unterscheiden.


Dateien in Python lesen

Um eine Datei in Python zu lesen, müssen wir die Datei beim Lesen von r öffnen Modus.

Hierfür stehen verschiedene Methoden zur Verfügung. Wir können den read(size) verwenden Methode zum Einlesen der Größe Anzahl von Daten. Wenn die Größe Parameter nicht angegeben ist, liest er und gibt bis zum Ende der Datei zurück.

Wir können den text.txt lesen Datei, die wir im obigen Abschnitt geschrieben haben, folgendermaßen:

>>> f = open("test.txt",'r',encoding = 'utf-8')
>>> f.read(4)    # read the first 4 data
'This'

>>> f.read(4)    # read the next 4 data
' is '

>>> f.read()     # read in the rest till end of file
'my first file\nThis file\ncontains three lines\n'

>>> f.read()  # further reading returns empty sting
''

Wir können sehen, dass der read() -Methode gibt einen Zeilenumbruch als '\n' zurück . Ist das Ende der Datei erreicht, erhalten wir beim Weiterlesen einen leeren String.

Wir können unseren aktuellen Dateicursor (Position) mit dem seek() ändern Methode. Ebenso der tell() Methode gibt unsere aktuelle Position (in Bytes) zurück.

>>> f.tell()    # get the current file position
56

>>> f.seek(0)   # bring file cursor to initial position
0

>>> print(f.read())  # read the entire file
This is my first file
This file
contains three lines

Wir können eine Datei Zeile für Zeile mit einer for-Schleife lesen. Dies ist sowohl effizient als auch schnell.

>>> for line in f:
...     print(line, end = '')
...
This is my first file
This file
contains three lines

In diesem Programm enthalten die Zeilen in der Datei selbst ein Zeilenumbruchzeichen \n . Also verwenden wir den Endparameter von print() Funktion, um zwei Zeilenumbrüche beim Drucken zu vermeiden.

Alternativ können wir den readline() verwenden Methode zum Lesen einzelner Zeilen einer Datei. Diese Methode liest eine Datei bis zum Zeilenumbruch, einschließlich des Zeilenumbruchzeichens.

>>> f.readline()
'This is my first file\n'

>>> f.readline()
'This file\n'

>>> f.readline()
'contains three lines\n'

>>> f.readline()
''

Zuletzt der readlines() -Methode gibt eine Liste der verbleibenden Zeilen der gesamten Datei zurück. Alle diese Lesemethoden geben leere Werte zurück, wenn das Dateiende (EOF) erreicht ist.

>>> f.readlines()
['This is my first file\n', 'This file\n', 'contains three lines\n']

Python-Dateimethoden

Für das Dateiobjekt stehen verschiedene Methoden zur Verfügung. Einige davon wurden in den obigen Beispielen verwendet.

Hier ist die vollständige Liste der Methoden im Textmodus mit einer kurzen Beschreibung:

Methode Beschreibung
Schließen() Schließt eine geöffnete Datei. Es hat keine Auswirkung, wenn die Datei bereits geschlossen ist.
detach() Trennt den zugrunde liegenden Binärpuffer vom TextIOBase und gibt es zurück.
fileno() Gibt eine Ganzzahl (Dateideskriptor) der Datei zurück.
flush() Leert den Schreibpuffer des Dateistreams.
isatty() Gibt True zurück wenn der Dateistream interaktiv ist.
read(n ) Liest höchstens n Zeichen aus der Datei. Liest bis zum Ende der Datei, wenn es negativ ist oder None .
lesbar() Gibt True zurück ob der Dateistream gelesen werden kann.
readline(n =-1) Liest und gibt eine Zeile aus der Datei zurück. Liest höchstens n ein Bytes, falls angegeben.
readlines(n =-1) Liest und gibt eine Liste von Zeilen aus der Datei zurück. Liest höchstens n ein Bytes/Zeichen, falls angegeben.
seek(offset ,von =SEEK_SET ) Ändert die Dateiposition auf offset Bytes, in Bezug auf von (Start, aktuell, Ende).
suchbar() Gibt True zurück wenn der Dateistrom wahlfreien Zugriff unterstützt.
sagen() Gibt den aktuellen Speicherort der Datei zurück.
truncate(Größe =None ) Ändert die Größe des Dateistroms auf Größe Bytes. Wenn Größe nicht angegeben ist, passt die Größe an die aktuelle Position an.
beschreibbar() Gibt True zurück ob in den Dateistream geschrieben werden kann.
write(s ) Schreibt den String s in die Datei und gibt die Anzahl der geschriebenen Zeichen zurück.
writelines(lines ) Schreibt eine Liste von Zeilen in die Datei.

Python

  1. C Eingang Ausgang (E/A)
  2. Python-Datentypen
  3. Python-Operatoren
  4. Python-Wörterbuch
  5. Python-Datei-I/O
  6. Python-Prüfung, ob Datei vorhanden ist | So prüfen Sie, ob ein Verzeichnis in Python existiert
  7. Python JSON:Codieren (Dumps), Decodieren (Laden) und JSON-Datei lesen
  8. C - Datei-E/A
  9. C# - Datei-E/A
  10. Python - Datei-I/O