Eingabe und Ausgabe von Python-Dateien

1. Öffnen Sie die Datei

1.1 open()-Methode

Die Python-Methode open() wird verwendet, um eine Datei zu öffnen und ein Dateiobjekt zurückzugeben. Diese Funktion muss bei der Verarbeitung der Datei verwendet werden. Wenn die Datei nicht geöffnet werden kann, wird OSError ausgegeben.

Hinweis: Wenn Sie die Methode open() verwenden, müssen Sie sicherstellen, dass das Dateiobjekt geschlossen ist, d. h. die Methode close() aufrufen.

Die übliche Form der open()-Funktion besteht darin, zwei Parameter zu erhalten: den Dateinamen (file) und den Modus (mode).

open(file, mode='r')

Das vollständige Syntaxformat lautet:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

Parameterbeschreibung:

  • file: erforderlich, Dateipfad (relativer oder absoluter Pfad)
  • Modus: optional, Dateiöffnungsmodus
  • Pufferung: Pufferung einstellen, Speicher statt Festplatte verwenden, Programm schneller machen

Eine Erläuterung der Parameter finden Sie unter: Python3 File(file) method .

1.2 Dateimodus

Modell beschreiben
R Öffnen Sie die Datei schreibgeschützt. Der Dateizeiger wird an den Anfang der Datei gesetzt. Dies ist der Standardmodus.
w Öffnen Sie eine Datei nur zum Schreiben. Wenn die Datei bereits existiert, wird die Datei geöffnet und von Anfang an bearbeitet, dh der ursprüngliche Inhalt wird gelöscht. Wenn die Datei nicht vorhanden ist, erstellen Sie eine neue Datei.
A Öffnen Sie eine Datei zum Anhängen. Wenn die Datei bereits existiert, wird der Dateizeiger an das Ende der Datei gesetzt. Das heißt, der neue Inhalt wird nach dem vorhandenen Inhalt geschrieben. Wenn die Datei nicht existiert, wird eine neue Datei zum Schreiben erstellt.
B binärer Modus.
+ Öffnen Sie eine Datei zur Aktualisierung (lesbar und beschreibbar).

Eine Erläuterung der Parameter finden Sie unter: Python3 File(file) method .

2. Grundlegende Dateimethode

2.1 Lesen und Schreiben

Dateiobjekte werden mit der Open-Funktion erstellt, und Daten werden mit den Write- und Read-Methoden geschrieben und gelesen.

f = open('somefile.txt','w')
f.write('Hello,')
f.write('wordl!')
f.close()

f = open('somefile.txt','r')
print(f.read(5))
print(f.read())
f.close()

Ausgang:

Hello
,wordl!

Hinweis: Newline-Schrift muss nach dem Zeichen hinzugefügt werden\n

f = open('somefile.txt','w')
f.write('01234567890123456789\n')
f.write('Hello,world!\n')
f.close()

f = open('somefile.txt','r')
print(f.readline())
f.close()

2.2 Wahlfreier Zugriff

Die Methode seek() wird verwendet, um den Lesezeiger der Datei an die angegebene Position zu verschieben. Die Syntax der seek()-Methode lautet wie folgt:

fileObject.seek(offset[, whence])

Parameter

  • offset – der Anfangs-Offset, der die Anzahl der Bytes darstellt, die verschoben werden müssen
  • woher: optional, Standardwert ist 0. Geben Sie dem Offset-Parameter eine Definition, die angibt, wo der Offset beginnen soll; 0 bedeutet, dass vom Anfang der Datei an gezählt wird, 1 bedeutet, dass ab der aktuellen Position gezählt wird, und 2 bedeutet, dass ab dem Ende der Datei gezählt wird.
f = open('somefile.txt','w')
f.write('01234567890123456789')
f.seek(5)
f.write('Hello,world!')
f.close()

f = open('somefile.txt','r')
print(f.read())
f.close()

Ausgang:

01234Hello,world!789

Die Methode tell() gibt die aktuelle Position der Datei zurück, die die aktuelle Position des Dateizeigers ist. Die Syntax der Methode tell() lautet wie folgt:

fileObject.tell()
f = open('somefile.txt','r')
print(f.read(3))
print(f.read(2))
print(f.tell())
f.close()

Ausgang:

012
34
5

2.3 Lesezeilen

Die Methode readline() wird verwendet, um eine ganze Zeile aus einer Datei zu lesen, einschließlich "\n"-Zeichen. Wenn ein nicht negatives Argument angegeben wird, wird die Anzahl der Bytes der angegebenen Größe einschließlich der Zeichen „\n“ zurückgegeben. Die Syntax der readline()-Methode lautet wie folgt:

fileObject.readline(size)

Parametergröße
– die Anzahl der Bytes, die aus der Datei gelesen werden sollen.
Rückgabewert
Gibt die aus der Zeichenfolge gelesenen Bytes zurück.

line = f.readline()

Die Methode readlines() wird verwendet, um alle Zeilen (bis zum Endezeichen EOF) zu lesen und eine Liste zurückzugeben, die von Pythons for...in...-Struktur verarbeitet werden kann. Gibt eine leere Zeichenfolge zurück, wenn das Abschlusszeichen EOF gefunden wird. Die Syntax der Methode readlines() lautet wie folgt:

fileObject.readlines( );

Parameter
Keine.
Rückgabewert
Gibt eine Liste zurück, die alle Zeilen enthält.

2.5 Iterieren über Dateiinhalte

2.5.1 Byte-Verarbeitung

Methode 1:

def process(string):
    print('Proecss: ',string)

f = open('somefile.txt','w')
f.write('First line\n')
f.write('Second line\n')
f.write('Third line\n')
f.close()

f = open('somefile.txt','r')
char = f.read(1)
while char:
    process(char)
    char = f.read(1)
f.close()

Methode 2:

f = open('somefile.txt','r')
while True:
    char = f.read(1)
    if not char:
        break
    process(char)
f.close()

2.5.2 Zeilenweise Verarbeitung

f = open('somefile.txt','r')
while True:
    line = f.readline()
    if not line:
        break
    process(line)
f.close()

2.5.3 Alles lesen

Wenn die Datei nicht sehr groß ist, können Sie sie mit read oder readlines vollständig lesen. Wenn die Datei sehr groß ist, können Sie stattdessen while und readline verwenden.

f = open('somefile.txt','r')
for char in f.read():
    process(char)
f.close()
f = open('somefile.txt','r')
for line in f.readlines():
    process(line)
f.close()

2.5.4 Iteration mit Dateieingabe

Das fileinput-Modul enthält Funktionen zum Öffnen von Dateien.

import fileinput
for line in fileinput.input('somefile.txt'):
    process(line)

Ausgang:

Proecss:  First line
Proecss:  Second line
Proecss:  Third line

2.5.5 Datei-Iteratoren

Super coole Methode, es scheint, dass die readlines-Methode nicht existieren muss.
Methode 1:

f = open('somefile.txt','r')
for line in f:
    process(line)
f.close()

Methode 2:

for line in open('somefile.txt','r'):
    process(line)

Obwohl es ein Dateiobjekt geben sollte, um die geöffnete Datei zu schließen, ist es auch möglich, sie nicht zu schließen, solange kein Schreibvorgang in die Datei erfolgt.

Methode 3:

lines = list(open('somefile.txt','r'))
print(lines)

Konvertiert einen Datei-Iterator in eine Liste von Zeichenfolgen, um den gleichen Effekt wie bei der Verwendung von readlines zu erzielen.

2.6 Beispiel aus ChatGPT

Beispiel 1:

	filename = 'test.txt'
    fid = open(filename)

    if fid == -1:
        print(f"The file '{filename}' does not exist.")
        return

    bulletinas = []
    i = 0
    while not fid.eof():
        current_line = fid.readline()
        print(current_line)

Beispiel 2:

	filename = 'test.txt'
    bulletinas = []
    with open(filename) as f:
        for current_line in f:
        print(current_line)        

Referenz: ChatGPT https://openai.com/

3. Lesen und Schreiben von Binärdateien

Python liest und schreibt die Binärdaten der Datei ist viel komplexer als die Sprache C/C++. Der Hauptunterschied besteht in der Konvertierung zwischen Bytes-Typ und anderen grundlegenden Datentypen (z. B. int/float).
Für Details siehe:
[1] Python verarbeitet Binärdateien (.bin)
[2] Python liest und schreibt binäre Daten von Dateien

Ich denke du magst

Origin blog.csdn.net/wokaowokaowokao12345/article/details/128801327
Empfohlen
Rangfolge