Heim  >  Artikel  >  Backend-Entwicklung  >  Python-Methoden zum Lesen und Schreiben von Dateien und Dateiobjekten

Python-Methoden zum Lesen und Schreiben von Dateien und Dateiobjekten

高洛峰
高洛峰Original
2017-02-23 11:20:261110Durchsuche

1.open

Nachdem Sie open zum Öffnen einer Datei verwendet haben, müssen Sie daran denken, die Methode close() des Dateiobjekts aufzurufen. Beispielsweise können Sie mit der try/finally-Anweisung sicherstellen, dass die Datei endgültig geschlossen werden kann.

file_object = open('thefile.txt')
versuchen Sie:
all_the_text = file_object.read( )
zum Schluss:
file_object.close( )
Hinweis: nicht möglich Fügen Sie die open-Anweisung in den try-Block ein, da das Dateiobjekt file_object die Methode close () nicht ausführen kann, wenn beim Öffnen der Datei eine Ausnahme auftritt.

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 not chunk:
break
do_something_with(chunk)
finally :
file_object.close( )

Jede Zeile lesen
list_of_all_the_lines = file_object.readlines( )
Wenn es sich bei der Datei um eine Textdatei handelt, können Sie das Dateiobjekt auch direkt durchlaufen, um jede Zeile abzurufen Zeile:

for line in file_object:
process line

3. Write file

Write text file
output = open('data' , ' w')

Binärdatei schreiben
output = open('data', 'wb')

Schreibdatei anhängen
output = open('data', ' w+' )

Daten schreiben
file_object = open('thefile.txt', 'w')
file_object.write(all_the_text)
file_object.close( )

Write Geben Sie mehrere Zeilen ein

file_object.writelines(list_of_text_strings)

Beachten Sie, dass der Aufruf von writelines zum Schreiben mehrerer Zeilen eine höhere Leistung hat als die Verwendung von write, um auf einmal zu schreiben.

Bei der Verarbeitung von Protokolldateien stoßen wir häufig auf eine solche Situation: Die Protokolldatei ist riesig und es ist unmöglich, die gesamte Datei auf einmal zur Verarbeitung 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 # 200Mposition = 0lines = file.readlines(sizehint)while not file.tell() - position < 0: Position = file.tell()lines = file.readlines(sizehint)

Jedes Mal, wenn die readlines(sizehint)-Funktion aufgerufen wird, werden ungefähr 200 MB Daten zurückgegeben, und die zurückgegebenen Daten müssen Da die Zeilendaten vollständig sind, ist die Anzahl der zurückgegebenen Daten in den meisten Fällen 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 an 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 einen Alias ​​namens open(), der möglicherweise aussagekräftiger ist, da es sich um integrierte Funktionen handelt. Werfen wir einen Blick auf seine Parameter. Seine Parameter werden alle in Form von Zeichenfolgen übergeben. Name ist der Name der Datei.

mode ist der offene Modus. Die optionalen Werte sind r w a U, die 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“ und 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 Arten des Zeilenumbruchs 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.

Wenn die Pufferung 0 ist, bedeutet dies keine Pufferung. Wenn sie 1 ist, bedeutet dies „Zeilenpufferung“. Wenn sie eine Zahl größer als 1 ist, bedeutet dies die Größe des Puffers, die in Bytes angegeben werden sollte.

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

•closed #Markieren Sie, ob die Datei geschlossen wurde, neu geschrieben durch close()
•encoding #Dateikodierung
•mode #Open-Modus
•name #Dateiname
• newlines # Der in der Datei verwendete Newline-Modus ist ein Tupel
•softspace #boolean-Typ, normalerweise 0. Er soll zum Lesen und Schreiben von print

Datei verwendet werden:

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

•F.readline([size])

#Eine Zeile lesen, wenn size definiert ist, es kann zurückgegeben werden, ist nur ein Teil einer Zeile

•F.readlines([size])

# Behandeln Sie jede Zeile der Datei als Mitglied einer Liste und geben Sie diese 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.

#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()

#Den Inhalt des Puffers auf die Festplatte schreiben

•F. fileno()

#Gibt eine lange Ganzzahl „Dateibezeichnung“ zurück

•F.isatty()

#Ob es sich bei der Datei um eine Endgerätedatei handelt ( in Unix-Systemen )

•F.tell()

#Gibt die aktuelle Position der Dateioperationsmarkierung zurück, mit dem Anfang der Datei als Ursprung

•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.

Die oben beschriebene Methode zum Lesen und Schreiben von Dateien und Dateiobjekten in Python (empfohlen) ist der gesamte vom Herausgeber freigegebene Inhalt. Ich hoffe, dass er Ihnen eine Referenz geben kann, und ich hoffe, dass Sie die chinesische PHP-Website unterstützen .

Weitere Artikel zu Pythons Methoden zum Lesen und Schreiben von Dateien und Dateiobjekten finden Sie auf der chinesischen PHP-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