Heim > Artikel > Backend-Entwicklung > Ausführliche Erklärung zum Lesen und Schreiben von Python-Dateien und zum Festlegen der Dateizeichenkodierung
Vorgänge zum Lesen und Schreiben von Dateien sind ein wichtiger und häufig verwendeter Teil in verschiedenen Programmiersprachen. Lassen Sie uns heute ausführlich über die Vorgänge zum Lesen und Schreiben von Dateien in Python sowie über die Punkte sprechen, auf die geachtet werden muss.
Der Code lautet wie folgt:
f = open("d:\test.txt", "w")
Erklärung:
Der erste Parameter ist der Dateiname, einschließlich des Pfads;
Der zweite Parameter ist der Öffnungsmodusmodus
'r': schreibgeschützt (Standard. Wenn die Datei nicht vorhanden ist, wird ein Fehler ausgegeben)
'w': nur Schreiben (erstellt die Datei automatisch, wenn sie nicht existiert)
'a': an das Ende der Datei anhängen
'r+': lesen und schreiben
Wenn es zum Öffnen in einer Binärdatei erforderlich ist, müssen Sie nach dem Modus das Zeichen „b“ hinzufügen, z. B. „rb“, „wb“ usw.
Parametergröße Gibt die Anzahl der Lesevorgänge an und kann weggelassen werden. Wenn der Größenparameter weggelassen wird, bedeutet dies, dass der gesamte Inhalt der Datei gelesen wird.
f.readline() liest den Inhalt einer Zeile der Datei. f.readlines() liest alle Zeilen in das Array [Zeile1, Zeile2,…ZeileN].
f = open('./pythontab.txt', 'r') content = f.read() print content
Diese Methode wird häufig verwendet, um zu vermeiden, dass der gesamte Dateiinhalt in den Speicher geladen wird, um die Effizienz zu verbessern.
Schreiben Sie einen String in die Datei
f = open('./pythontab.txt', 'r+') f.write('Hello, Pythontab.com') f.close()
Hinweis: Wenn der Schreibvorgang endet, können Sie Hinzufügen „n“ nach der Zeichenfolge, um eine neue Zeile anzuzeigen, und schließlich muss die Datei mit f.close() geschlossen werden. Andernfalls kann es zu Ausnahmen kommen, insbesondere in Situationen mit hoher Parallelität.
Nach dem Lesen von f.read() erreicht der Dateizeiger das Ende der Datei Stellen Sie fest, dass es sich bei dem gelesenen Inhalt um leeren Inhalt handelt. Wenn Sie den gesamten Inhalt erneut lesen möchten, müssen Sie den Positionierungszeiger an den Anfang der Datei verschieben:
f.seek(0)
Das Format dieser Funktion ist wie folgt (Einheit sind Bytes): f.seek(offset, from_what) from_what gibt die Startposition des Lesens an, und offset gibt die Verschiebung um eine bestimmte Distanz von from_what an. Zum Beispiel f.seek(10, 3) zeigt die Positionierung zum dritten Zeichen und das Zurückbewegen um 10 Zeichen an.
Wenn der from_what-Wert 0 ist, gibt er den Anfang der Datei an. Er kann auch weggelassen werden. Der Standardwert ist 0, was den Anfang der Datei darstellt. Ein vollständiges Beispiel finden Sie unten:
f = open('./pythontab.txt', 'r+') f.write('Hello, Pythontab.com') f.seek(5) # 定位到第6个byte f.read(1) f.seek (-3, 2) #定位到第2个字符并再向前移动3个字符 f.read(1)
Schließen Sie die Datei, um Ressourcen freizugeben. Denken Sie daran, die Datei zu schließen, nachdem der Dateivorgang abgeschlossen ist .close(), das Ressourcen freigeben kann, damit andere Programme nur Dateien im ASCII- oder GBK-Kodierungsformat lesen und schreiben können, was relativ einfach ist:
# coding=gbk f = open('./pythontab.txt','r') # r 指示文件打开模式,即只读 s1 = f.read() s2 = f.readline() s3 = f.readlines() #读出所有内容 f.close() f = open('./pythontab.txt','w') # w 写文件 11 f.write(s1) 12 f.writelines(s2) # 没有writeline 13 f.close()
Python-Unicode-Dateien Lesen und Schreiben:
# coding=gbk import codecs f = codecs.open('./pythontab.txt','a','utf-8') f.write(u'中文') s = '中文' f.write(s.decode('gbk')) f.close() f = codecs.open('./pythontab.txt','r','utf-8') s = f.readlines() f.close() for line in s: print line.encode('gbk')
Die Py-Datei verwendet standardmäßig die ASCII-Kodierung angezeigt, wird eine Konvertierung von ASCII in die Systemstandardkodierung durchgeführt. Zu diesem Zeitpunkt tritt ein Fehler auf: SyntaxError: Nicht-ASCII-Zeichen. Sie müssen Codierungsanweisungen in der ersten oder zweiten Zeile der Codedatei hinzufügen:
# programming=utf-8 ##Speicherung chinesischer Zeichen in UTF-8-Codierung
Drucken Sie '中文' wie oben Die Zeichenfolgeneingabe wird direkt entsprechend der Codierung der Codedatei verarbeitet. Wenn Unicode-Codierung verwendet wird, gibt es die folgenden zwei Methoden:
s1 = u'Chinesisch' #u bedeutet, dass zum Speichern von Informationen Unicode-Codierung verwendet wird
s2 = unicode('Chinese','gbk')
Unicode ist eine integrierte Funktion und der zweite Parameter gibt das Codierungsformat der Quellzeichenfolge an.
decode ist eine Methode, mit der jede Zeichenfolge in das Unicode-Format konvertiert werden muss. Der Parameter gibt das Codierungsformat der Quellzeichenfolge an.
encode ist auch eine Methode, die jeder String hat und die den String in das durch den Parameter angegebene Format konvertiert.
Verwenden Sie u'Chinesische Zeichen', um einen Unicode-Typ zu erstellen, andernfalls wird ein Str-Typ erstellt
Die Codierung von str hängt vom System ab Umgebung, im Allgemeinen der von sys.getfilesystemencoding()
erhaltene Wert. Um von Unicode in str zu konvertieren, müssen Sie die Codierungsmethode
verwenden, um von str in Unicode zu konvertieren um die Dekodierung zu verwenden
, zum Beispiel:
# coding=utf-8 #默认编码格式为utf-8 s = u'中文' #unicode编码的文字 print s.encode('utf-8') #转换成utf-8格式输出 print s #效果与上面相同,似乎默认直接转换为指定编码
u=u'unicode encoded text'
g=u.encode( 'gbk') #In GBK-Format konvertieren
print g #Dies ist verstümmelter Code, da die aktuelle Umgebung utf-8 ist und gbk-codierter Text verstümmelt ist
str=g.decode('gbk ').encode('utf-8') # Lesen Sie g im GBK-Codierungsformat (da es GBK-codiert ist), konvertieren Sie es in das UTF-8-Format und geben Sie es aus
print str #Normale Anzeige von Chinesisch
Sichere Methode:
s.decode('gbk','ignore').encode('utf-8') #In GBK-Codierung lesen (natürlich Text im GBK-Codierungsformat lesen) und ignorieren Sie die falsche Codierung, konvertieren Sie sie in die utf-8-Codierungsausgabe
Da der Funktionsprototyp von decode decode([encoding], [errors='strict']) ist, können Sie den zweiten Parameter verwenden, um die zu steuern Der Standardparameter ist „strikt“, was bedeutet, dass eine Ausnahme ausgelöst wird, wenn ein unzulässiges Zeichen erreicht wird.
Wenn auf „Ignorieren“ gesetzt, werden unzulässige Zeichen ignoriert Ersetzen, unzulässige Zeichen werden durch ? ersetzt.
Bei Einstellung auf xmlcharrefreplace werden die Zeichenreferenzen von XML verwendet.
Das obige ist der detaillierte Inhalt vonAusführliche Erklärung zum Lesen und Schreiben von Python-Dateien und zum Festlegen der Dateizeichenkodierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!