Heim  >  Artikel  >  Backend-Entwicklung  >  Vertiefte Kenntnisse der Methoden zum Lesen und Schreiben von Python-Dateien

Vertiefte Kenntnisse der Methoden zum Lesen und Schreiben von Python-Dateien

高洛峰
高洛峰Original
2017-03-17 17:14:481406Durchsuche

1.open

Nachdem Sie open zum Öffnen einer Datei verwendet haben, müssen Sie unbedingt die close()-Methode des DateiObjekts aufrufen. Sie können beispielsweise die try/finally-Anweisung verwenden, um sicherzustellen, dass die Datei am Ende geschlossen werden kann.

Datei_Objekt = open('thefile.txt')

versuchen Sie:

alle_the_text = file_object.read( )

finally:

file_object.close( )

Hinweis: Sie können die open-Anweisung nicht in den try-Block einfügen, da sie wann angezeigt wird Wenn eine Ausnahme auftritt, kann das Dateiobjekt file_object die Methode close() nicht ausführen.

2. Datei lesen

Textdatei lesen

input = open('data', 'r')

#Der zweite Parameter ist standardmäßig r

input = open('data')

Binärdatei lesen

input = open('data', 'rb')

Alle Inhalte lesen

file_object = open('thefile.txt')

versuchen Sie:

all_the_text = file_object.read( )

endlich:

file_object.close( )

Feste Bytes lesen

file_object = open('abinfile', 'rb' )

try:

while True:

chunk = file_object.read(100)

if nicht stückig:

                                                                                                                                                                                                                   🎜>

Jede Zeile lesen

list

_of_all_the_lines = file_object.

readline

s( )

Wenn es sich bei der Datei um eine Textdatei handelt, können Sie das Dateiobjekt auch direkt durchlaufen, um jede Zeile zu erhalten:

for line in file_object: Prozesszeile

3. Dateien schreiben

Textdateien schreiben

output = open('data', 'w')

Binärdateien schreiben

Ausgabe = open('data', 'wb')

Schreibdatei anhängen

Ausgabe = open('data', 'w+')

Daten schreiben

file_object = open('thefile.txt', 'w')

file_object.write(all_the_text)

file_object .close( )

Mehrere Zeilen schreiben

file_object.writelines(list_of_text_strings)

Beachten Sie, dass der Aufruf von writelines zum Schreiben mehrerer Zeilen einen größeren Einfluss auf die Leistung hat als die Verwendung von write zum einmaligen Schreiben.

Bei der Verarbeitung von Protokolldateien kommt es häufig vor, dass die Protokolldatei sehr groß ist und es nicht möglich ist, die gesamte Datei auf einmal zur Verarbeitung in den Speicher einzulesen Bei einem Computer mit einem physischen Speicher von 2 GB möchten wir möglicherweise nur 200 MB des Inhalts gleichzeitig verarbeiten.

In

Python

stellt das integrierte File-Objekt direkt eine readlines(sizehint)

Funktion

bereit, um so etwas zu erreichen. Nehmen Sie den folgenden Code als Beispiel:

file = open('test.log', 'r')sizehint = 209715200 # 200M

position

= 0lines = file.readlines(sizehint)while nicht file.tell() - Position < 0: Position = file.tell() Zeilen = file.readlines(sizehint)

Jedes Mal, wenn die Funktion readlines(sizehint) aufgerufen wird, werden ungefähr 200 MB Daten gespeichert zurückgegeben, und alle zurückgegebenen Daten müssen vollständige Zeilendaten sein. In den meisten Fällen ist die Anzahl der Bytes der zurückgegebenen Daten etwas größer als der durch sizehint angegebene Wert (außer wenn die Funktion readlines(sizehint) zum letzten Mal aufgerufen wird ). Normalerweise passt Python den vom Benutzer angegebenen Sizehint-Wert automatisch auf ein ganzzahliges Vielfaches der internen Cache-Größe an. Datei ist ein spezieller Typ in Python, der zum Betrieb externer Dateien in Python-Programmen verwendet wird. Alles in Python ist ein Objekt, und Datei ist keine Ausnahme. Datei hat Dateimethoden und -attribute. Schauen wir uns zunächst an, wie man ein Dateiobjekt erstellt:

file(name[, mode[, buffering]]) Die Funktion

file() wird verwendet, um ein Dateiobjekt zu erstellen, das hat ein Alias ​​open(), vielleicht anschaulicher, es handelt sich um integrierte Funktionen

. Werfen wir einen Blick auf seine Parameter. Seine Parameter werden alle in Form einer

Zeichenfolge

übergeben. Name ist der Name der Datei.

mode ist der offene Modus, und die optionalen Werte sind r w a U, die jeweils Lese- (Standard) und Schreibmodi darstellen, die verschiedene Zeilenumbrüche unterstützen. Wenn Sie eine Datei im W- oder A-Modus öffnen und die Datei nicht existiert, wird sie automatisch erstellt. Wenn Sie den W-Modus zum Öffnen einer vorhandenen Datei verwenden, wird außerdem der Inhalt der Originaldatei gelöscht, da sich die anfängliche Dateioperationsmarkierung am Anfang der Datei befindet. Wenn Sie zu diesem Zeitpunkt einen Schreibvorgang ausführen, wird der Originalinhalt gelöscht wird zweifellos gelöscht. Aus historischen Gründen gibt es für das Zeilenumbruchzeichen in verschiedenen Systemen unterschiedliche Modi. Unter Unix ist es beispielsweise ein „n“, aber unter Windows ist es „rn“. Das Öffnen einer Datei im U-Modus unterstützt alle Zeilenumbruchmodi. r' 'n' 'rn' kann alle Zeilenumbrüche darstellen, und es wird ein Tupel zum Speichern der in dieser Datei verwendeten Zeilenumbruchzeichen verwendet. Obwohl es viele Modi für Zeilenumbrüche gibt, wird beim Lesen in Python stattdessen n verwendet. Nach dem Moduszeichen können Sie auch die beiden Zeichen + b t hinzufügen, die jeweils angeben, dass die Datei gleichzeitig gelesen und geschrieben werden kann und die Datei im Binärmodus oder Textmodus (Standard) geöffnet werden kann.

Pufferung Wenn es 0 ist, bedeutet es keine Pufferung; wenn es 1 ist, bedeutet es „Zeilenpufferung“; wenn es eine Zahl größer als 1 ist, bedeutet es die Größe des Puffers, der vorhanden sein sollte Bytes.

Das Dateiobjekt verfügt über eigene Eigenschaften und Methoden. Schauen wir uns zunächst die Attribute der Datei an.

geschlossen #Markieren Sie, ob die Datei geschlossen wurde, neu geschrieben durch close()

Kodierung #Dateikodierung

Modus #Öffnungsmodus

Name #Datei name

newlines #Der in der Datei verwendete Newline-Modus ist ein Tupel

Softspace #boolescher Typ, normalerweise 0, der für verwendet werden soll print

Methoden zum Lesen und Schreiben von Dateien:

F.read([size]) #size ist die Länge des Lesevorgangs in Bytes

F.readline ([size ])

#Eine Zeile lesen Wenn die Größe definiert ist, ist es möglich, nur einen Teil einer Zeile zurückzugeben

F.readlines([size])

#Lesen Sie jede Zeile der Datei. Fungiert als Mitglied einer Liste und gibt die Liste zurück. Tatsächlich wird es intern durch den Aufruf von readline() in einer Schleife implementiert. Wenn der Größenparameter angegeben wird, stellt die Größe die Gesamtlänge des gelesenen Inhalts dar, was bedeutet, dass nur ein Teil der Datei gelesen werden darf.

F.write(str)

#Str in die Datei schreiben, write() fügt nach str kein Newline-Zeichen hinzu

F.writelines( seq)

#Schreiben Sie den gesamten Inhalt von seq in die Datei. Diese Funktion schreibt auch einfach originalgetreu, ohne nach jeder Zeile etwas hinzuzufügen. Andere Methoden der

Datei:

F.close()

#Schließen Sie die Datei. Python schließt eine Datei automatisch, wenn sie nicht mehr verwendet wird. Diese Funktion ist jedoch nicht garantiert. Es ist am besten, die Gewohnheit zu entwickeln, sie selbst zu schließen. Wenn eine Datei nach dem Schließen bearbeitet wird, wird ein ValueError generiert

F.flush()

#Schreiben Sie den Inhalt des Puffers auf die Festplatte

F.fileno()

#Gibt eine lange Ganzzahl „Dateibezeichnung“ zurück

F.isatty()

#Ob es sich bei der Datei um ein Terminal handelt Gerätedatei (in Unix-Systemen)

F.tell()

# Gibt die aktuelle Position der Dateioperationsmarkierung zurück, wobei der Anfang der Datei der Ursprung ist

F.next()

#Kehren Sie zur nächsten Zeile zurück und verschieben Sie das Dateioperationsflag in die nächste Zeile. Wenn eine Datei in einer Anweisung wie for ... in file verwendet wird, wird die Funktion next() aufgerufen, um die Traversierung zu implementieren.

F.seek(offset[,whence])

#Bewegen Sie die Dateioperationsmarkierung an die Offset-Position. Dieser Versatz wird im Allgemeinen relativ zum Dateianfang berechnet und ist im Allgemeinen eine positive Zahl. Dies trifft jedoch nicht unbedingt zu, wenn der Wherece-Parameter angegeben wird. Wherece kann 0 sein, um die Berechnung von Anfang an zu starten, und 1, um die aktuelle Position als Ursprung zu verwenden. 2 gibt an, dass das Ende der Datei als Ausgangspunkt für die Berechnung verwendet wird. Es ist zu beachten, dass beim Öffnen der Datei im a- oder a+-Modus die Dateioperationsmarkierung bei jedem Schreibvorgang automatisch zum Ende der Datei zurückkehrt.

F.truncate([size])

#Schneiden Sie die Datei auf die angegebene Größe. Standardmäßig wird auf die Position der aktuellen Dateioperationsmarkierung geschnitten. Wenn die Größe größer als die Dateigröße ist, wird die Datei je nach System möglicherweise nicht geändert, die Datei wird möglicherweise mit 0 auf die entsprechende Größe aufgefüllt oder es werden zufällige Inhalte hinzugefügt.


Das obige ist der detaillierte Inhalt vonVertiefte Kenntnisse der Methoden zum Lesen und Schreiben von Python-Dateien. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn