Python-Datei-E/A
Dieses Kapitel behandelt nur alle grundlegenden I/O-Funktionen. Weitere Funktionen entnehmen Sie bitte der Python-Standarddokumentation.
Ausgabe auf dem Bildschirm
Die einfachste Möglichkeit der Ausgabe ist die Verwendung der print-Anweisung, bei der Sie null oder mehr durch Kommas getrennte Ausdrücke übergeben können. Diese Funktion wandelt die von Ihnen übergebenen Ausdrücke in einen Zeichenkettenausdruck um und schreibt das Ergebnis wie folgt auf die Standardausgabe:
#!/usr/bin/python # -*- coding: UTF-8 -*- print "Python 是一个非常棒的语言,不是吗?"
Das folgende Ergebnis wird auf Ihrem Standardbildschirm angezeigt:
Python 是一个非常棒的语言,不是吗?
Tastatureingabe lesen
Python bietet zwei integrierte Funktionen, um eine Textzeile aus der Standardeingabe zu lesen, die standardmäßig die Tastatur ist. Wie folgt:
- raw_input
- input
raw_input-Funktion
Die Funktion raw_input([prompt]) liest eine Zeile aus der Standardeingabe und gibt einen String zurück (wobei der abschließende Zeilenumbruch entfernt wird):
#!/usr/bin/python
# -*- coding: UTF-8 -*-
str = raw_input("请输入:")
print "你输入的内容是: ", str
Daraufhin werden Sie aufgefordert, eine beliebige Zeichenkette einzugeben, und anschließend wird dieselbe Zeichenkette auf dem Bildschirm angezeigt. Wenn ich "Hello Python!" eingebe, sieht die Ausgabe wie folgt aus:
请输入:Hello Python! 你输入的内容是: Hello Python!
input-Funktion
input([prompt])-Funktion undraw_input([prompt])Die Funktionen sind im Wesentlichen ähnlich, aber input kann einen Python-Ausdruck als Eingabe empfangen und das Ergebnis der Operation zurückgeben.
#!/usr/bin/python
# -*- coding: UTF-8 -*-
str = input("请输入:")
print "你输入的内容是: ", str
Daraus ergeben sich entsprechend der Eingabe folgende Ergebnisse:
请输入:[x*5 for x in range(2,10,2)] 你输入的内容是: [10, 20, 30, 40]
Dateien öffnen und schließen
Jetzt können Sie aus der Standardeingabe lesen und in die Standardausgabe schreiben. Nun wollen wir sehen, wie man tatsächliche Datendateien liest und schreibt.
Python bietet standardmäßig die erforderlichen Funktionen und Methoden für grundlegende Dateioperationen. Sie können dasfile-Dateiobjekt verwenden, um die meisten Dateioperationen auszuführen.
open-Funktion
Sie müssen zuerst eine Datei mit der in Python integrierten Funktion open() öffnen, um ein Dateiobjekt zu erstellen, und dann können die entsprechenden Methoden aufgerufen werden, um darin zu lesen und zu schreiben.
Syntax:
file object = open(file_name [, access_mode][, buffering])
Die Details der einzelnen Parameter sind wie folgt:
- file_name: Die Variable file_name ist ein Zeichenkettenwert, der den Namen der Datei enthält, auf die Sie zugreifen möchten.
- access_mode: access_mode bestimmt den Modus, in dem die Datei geöffnet wird: Nur-Lesen, Schreiben, Anhängen usw. Eine vollständige Liste aller möglichen Werte finden Sie unten. Dieser Parameter ist optional, und der standardmäßige Dateizugriffsmodus ist Nur-Lesen (r).
- buffering: Wenn buffering auf 0 gesetzt ist, wird keine Pufferung durchgeführt. Wenn buffering auf 1 gesetzt ist, werden Zeilen beim Zugriff auf Dateien gepuffert. Wenn buffering auf eine ganze Zahl größer als 1 gesetzt ist, gibt sie die Puffergröße des Pufferbereichs an. Wenn ein negativer Wert verwendet wird, entspricht die Puffergröße dem Systemstandard.
Vollständige Liste der Modi zum Öffnen von Dateien:
| Mode | Beschreibung |
|---|---|
| t | Textmodus (Standard). |
| x | Schreibmodus, erstellt eine neue Datei; falls die Datei bereits existiert, wird ein Fehler gemeldet. |
| b | Binärmodus. |
| + | Öffnet eine Datei zum Aktualisieren (lesbar und beschreibbar). |
| U | Universeller Zeilenumbruchmodus (nicht empfohlen). |
| r | Öffnet die Datei im Nur-Lese-Modus. Der Dateizeiger wird an den Anfang der Datei gesetzt. Dies ist der Standardmodus. |
| rb | Öffnet eine Datei im Binärformat zum Nur-Lesen. Der Dateizeiger wird an den Anfang der Datei gesetzt. Dies ist der Standardmodus. Wird im Allgemeinen für Nicht-Textdateien wie Bilder usw. verwendet. |
| r+ | Öffnet eine Datei zum Lesen und Schreiben. Der Dateizeiger wird an den Anfang der Datei gesetzt. |
| rb+ | Öffnet eine Datei im Binärformat zum Lesen und Schreiben. Der Dateizeiger wird an den Anfang der Datei gesetzt. Wird im Allgemeinen für Nicht-Textdateien wie Bilder usw. verwendet. |
| w | Öffnet eine Datei nur zum Schreiben. Wenn die Datei bereits vorhanden ist, wird die Datei geöffnet und vom Anfang an bearbeitet, das heißt, der ursprüngliche Inhalt wird gelöscht. Wenn die Datei nicht vorhanden ist, wird eine neue Datei erstellt. |
| wb | Öffnet eine Datei im Binärformat nur zum Schreiben. Wenn die Datei bereits vorhanden ist, wird die Datei geöffnet und vom Anfang an bearbeitet, das heißt, der ursprüngliche Inhalt wird gelöscht. Wenn die Datei nicht vorhanden ist, wird eine neue Datei erstellt. Wird im Allgemeinen für Nicht-Textdateien wie Bilder usw. verwendet. |
| w+ | Öffnet eine Datei zum Lesen und Schreiben. Wenn die Datei bereits existiert, wird sie geöffnet und ab dem Anfang bearbeitet, was bedeutet, dass der ursprüngliche Inhalt gelöscht wird. Wenn die Datei nicht existiert, wird eine neue Datei erstellt. |
| wb+ | Öffnet eine Datei im Binärformat zum Lesen und Schreiben. Wenn die Datei bereits existiert, wird sie geöffnet und ab dem Anfang bearbeitet, was bedeutet, dass der ursprüngliche Inhalt gelöscht wird. Wenn die Datei nicht existiert, wird eine neue Datei erstellt. Wird im Allgemeinen für Nicht-Textdateien wie Bilder usw. verwendet. |
| a | Öffnet eine Datei zum Anhängen. Wenn die Datei bereits existiert, wird der Dateizeiger an das Ende der Datei gesetzt. Das heißt, neuer Inhalt wird nach dem vorhandenen Inhalt geschrieben. Wenn die Datei nicht existiert, wird eine neue Datei zum Schreiben erstellt. |
| ab | Öffnet eine Datei im Binärformat zum Anhängen. Wenn die Datei bereits existiert, wird der Dateizeiger an das Ende der Datei gesetzt. Das heißt, neuer Inhalt wird nach dem vorhandenen Inhalt geschrieben. Wenn die Datei nicht existiert, wird eine neue Datei zum Schreiben erstellt. |
| a+ | Öffnet eine Datei zum Lesen und Schreiben. Wenn die Datei bereits existiert, wird der Dateizeiger an das Ende der Datei gesetzt. Die Datei befindet sich beim Öffnen im Anhängemodus. Wenn die Datei nicht existiert, wird eine neue Datei zum Lesen und Schreiben erstellt. |
| ab+ | Öffnet eine Datei im Binärformat zum Anhängen. Wenn die Datei bereits existiert, wird der Dateizeiger an das Ende der Datei gesetzt. Wenn die Datei nicht existiert, wird eine neue Datei zum Lesen und Schreiben erstellt. |
Das folgende Diagramm fasst diese Modi gut zusammen:

| Mode | r | r+ | w | w+ | a | a+ |
|---|---|---|---|---|---|---|
| read | + | + | + | + | ||
| write | + | + | + | + | + | |
| Erstelle | + | + | + | + | ||
| Überschreiben | + | + | ||||
| Zeiger am Anfang | + | + | + | + | ||
| Zeiger am Ende | + | + |
Dateiobjekt-Attribute
Sobald eine Datei geöffnet ist, haben Sie ein Dateiobjekt und können verschiedene Informationen über die Datei abrufen.
Im Folgenden finden Sie eine Liste aller Attribute, die mit dem Dateiobjekt zusammenhängen:
| Attribute | Beschreibung |
|---|---|
| file.closed | Gibt true zurück, wenn die Datei geschlossen wurde, andernfalls gibt sie false zurück. |
| file.mode | Gibt den Zugriffsmodus der geöffneten Datei zurück. |
| file.name | Gibt den Namen der Datei zurück. |
| file.softspace | Wenn nach einer Ausgabe mit print ein Leerzeichen folgen muss, gibt sie false zurück. Andernfalls gibt sie true zurück. |
Das folgende Beispiel:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 打开一个文件
fo = open("foo.txt", "w")
print "文件名: ", fo.name
print "是否已关闭 : ", fo.closed
print "访问模式 : ", fo.mode
print "末尾是否强制加空格 : ", fo.softspace
Das obige Beispiel gibt das folgende Ergebnis aus:
文件名: foo.txt 是否已关闭 : False 访问模式 : w 末尾是否强制加空格 : 0
close()-Methode
Die close()-Methode eines Dateiobjekts leert alle noch im Puffer befindlichen, nicht geschriebenen Informationen und schließt die Datei, wonach kein weiteres Schreiben mehr erfolgen kann.
Wenn die Referenz eines Dateiobjekts einer anderen Datei neu zugewiesen wird, schließt Python die vorherige Datei. Es ist eine gute Angewohnheit, Dateien mit der close()-Methode zu schließen.
Syntax:
fileObject.close()
Beispiel:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 打开一个文件
fo = open("foo.txt", "w")
print "文件名: ", fo.name
# 关闭打开的文件
fo.close()
Das obige Beispiel gibt das folgende Ergebnis aus:
文件名: foo.txt
Dateien lesen und schreiben:
Das Dateiobjekt bietet eine Reihe von Methoden, die unseren Dateizugriff erleichtern. Sehen wir uns an, wie man die Methoden read() und write() zum Lesen und Schreiben von Dateien verwendet.
write()-Methode
Die write()-Methode kann jeden String in eine geöffnete Datei schreiben. Es ist wichtig zu beachten, dass Python-Strings binäre Daten sein können, nicht nur Text.
Die write()-Methode fügt kein Zeilenumbruchzeichen ('\n') am Ende des Strings hinzu:
Syntax:
fileObject.write(string)
Hier ist der übergebene Parameter der Inhalt, der in die geöffnete Datei geschrieben werden soll.
Beispiel:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 打开一个文件
fo = open("foo.txt", "w")
fo.write( "www.example.com!\nVery good site!\n")
# 关闭打开的文件
fo.close()
Die obige Methode erstellt eine foo.txt-Datei, schreibt den empfangenen Inhalt hinein und schließt schließlich die Datei. Wenn Sie diese Datei öffnen, sehen Sie den folgenden Inhalt:
$ cat foo.txt www.example.com! Very good site!
read()-Methode
Die read()-Methode liest einen String aus einer geöffneten Datei. Es ist wichtig zu beachten, dass Python-Strings binäre Daten sein können, nicht nur Text.
Syntax:
fileObject.read([count])
Hier ist der übergebene Parameter die Anzahl der Bytes, die aus der geöffneten Datei gelesen werden sollen. Diese Methode beginnt mit dem Lesen am Anfang der Datei. Wenn count nicht übergeben wird, versucht sie, so viel Inhalt wie möglich zu lesen, wahrscheinlich bis zum Ende der Datei.
Beispiel:
Hier verwenden wir die oben erstellte foo.txt-Datei.
Beispiel
# -*- coding: UTF-8 -*-
# Eine Datei öffnen
fo = open("foo.txt", "r+")
str = fo.read(10)
print "Die gelesene Zeichenkette ist: ", str
# Die geöffnete Datei schließen
fo.close()
Das obige Beispiel gibt das folgende Ergebnis aus:
读取的字符串是 : www.example
Dateipositionierung
Die Methode tell() gibt die aktuelle Position innerhalb der Datei an. Mit anderen Worten: Der nächste Lese- oder Schreibvorgang erfolgt so viele Bytes nach dem Anfang der Datei.
Die Methode seek(offset[, from]) ändert die aktuelle Dateiposition. Die Variable offset gibt die Anzahl der zu verschiebenden Bytes an. Die Variable from gibt die Referenzposition an, von der aus die Bytes verschoben werden sollen.
Wenn from auf 0 gesetzt ist, bedeutet das, dass der Anfang der Datei als Referenzposition für das Verschieben von Bytes verwendet wird. Wenn er auf 1 gesetzt ist, wird die aktuelle Position als Referenzposition verwendet. Wenn er auf 2 gesetzt ist, wird das Ende der Datei als Referenzposition verwendet.
Beispiel:
Verwenden Sie die Datei foo.txt, die wir oben erstellt haben.
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 打开一个文件
fo = open("foo.txt", "r+")
str = fo.read(10)
print "读取的字符串是 : ", str
# 查找当前位置
position = fo.tell()
print "当前文件位置 : ", position
# 把指针再次重新定位到文件开头
position = fo.seek(0, 0)
str = fo.read(10)
print "重新读取字符串 : ", str
# 关闭打开的文件
fo.close()
Die Ausgabe des obigen Beispiels ist:
读取的字符串是 : www.example 当前文件位置 : 10 重新读取字符串 : www.example
Umbenennen und Löschen von Dateien
Das os-Modul von Python bietet Methoden, die Ihnen helfen, Dateiverarbeitungsvorgänge wie das Umbenennen und Löschen von Dateien durchzuführen.
Um dieses Modul zu verwenden, müssen Sie es zuerst importieren, und dann können Sie verschiedene zugehörige Funktionen aufrufen.
rename()-Methode
Die rename()-Methode erfordert zwei Parameter: den aktuellen Dateinamen und den neuen Dateinamen.
Syntax:
os.rename(current_file_name, new_file_name)
Beispiel:
Das folgende Beispiel benennt eine vorhandene Datei, test1.txt, um.
#!/usr/bin/python # -*- coding: UTF-8 -*- import os # 重命名文件test1.txt到test2.txt. os.rename( "test1.txt", "test2.txt" )
remove()-Methode
Sie können die remove()-Methode verwenden, um Dateien zu löschen, und müssen den Namen der zu löschenden Datei als Parameter angeben.
Syntax:
os.remove(file_name)
Beispiel:
Das folgende Beispiel löscht eine vorhandene Datei, test2.txt.
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import os
# 删除一个已经存在的文件test2.txt
os.remove("test2.txt")
Verzeichnisse in Python:
Alle Dateien sind in verschiedenen Verzeichnissen enthalten, aber Python kann sie problemlos verwalten. Das os-Modul bietet viele Methoden, mit denen Sie Verzeichnisse erstellen, löschen und ändern können.
mkdir()-Methode
Sie können die mkdir()-Methode des os-Moduls verwenden, um neue Verzeichnisse im aktuellen Verzeichnis zu erstellen. Sie müssen einen Parameter angeben, der den Namen des zu erstellenden Verzeichnisses enthält.
Syntax:
os.mkdir("newdir")
Beispiel:
Das folgende Beispiel erstellt ein neues Verzeichnis, test, im aktuellen Verzeichnis.
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import os
# 创建目录test
os.mkdir("test")
chdir()-Methode
Sie können die Methode chdir() verwenden, um das aktuelle Verzeichnis zu ändern. Der Parameter, den die Methode chdir() benötigt, ist der Name des Verzeichnisses, das Sie als aktuelles Verzeichnis festlegen möchten.
Syntax:
os.chdir("newdir")
Beispiel:
Das folgende Beispiel wechselt in das Verzeichnis "/home/newdir".
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import os
# 将当前目录改为"/home/newdir"
os.chdir("/home/newdir")
getcwd()-Methode
Die Methode getcwd() zeigt das aktuelle Arbeitsverzeichnis an.
Syntax:
os.getcwd()
Beispiel:
Das folgende Beispiel gibt das aktuelle Verzeichnis aus:
#!/usr/bin/python # -*- coding: UTF-8 -*- import os # 给出当前的目录 print os.getcwd()
rmdir()-Methode
Die Methode rmdir() löscht ein Verzeichnis, und der Verzeichnisname wird als Parameter übergeben.
Bevor dieses Verzeichnis gelöscht wird, sollte zunächst sein gesamter Inhalt geleert werden.
Syntax:
os.rmdir('dirname')
Beispiel:
Das folgende Beispiel zeigt das Löschen des Verzeichnisses "/tmp/test". Der vollständig qualifizierte Name des Verzeichnisses muss angegeben werden, andernfalls wird das Verzeichnis im aktuellen Verzeichnis gesucht.
#!/usr/bin/python # -*- coding: UTF-8 -*- import os # 删除”/tmp/test”目录 os.rmdir( "/tmp/test" )
Datei- und verzeichnisbezogene Methoden
Dateiobjekte und OS-Objekte bieten viele Methoden zum Arbeiten mit Dateien und Verzeichnissen. Sie können auf die untenstehenden Links klicken, um Details anzuzeigen:
- Dateiobjekt-Methoden: Das Dateiobjekt bietet eine Reihe von Methoden zum Arbeiten mit Dateien.
- OS-Objektmethoden: Bietet eine Reihe von Methoden zur Handhabung von Dateien und Verzeichnissen.: Provides a series of methods for handling files and directories.