Python Datei-E/A: Eingabe- und Ausgabeoperationen meistern
Ausgabe auf dem Bildschirm
Die einfachste Möglichkeit, Ausgabe zu erzeugen, ist die print-Anweisung, der Sie null oder mehr Ausdrücke, durch Kommas getrennt, übergeben können. Diese Funktion konvertiert die übergebenen Ausdrücke in einen String und schreibt das Ergebnis auf die Standardausgabe:
#!/usr/bin/python
print("Python is really a great language,", "isn't it?")
Dies erzeugt folgende Ausgabe:
Python is really a great language, isn't it?
Tastatureingabe lesen
Python bietet zwei eingebaute Funktionen, um eine Textzeile von der Standardeingabe (standardmäßig die Tastatur) zu lesen:
raw_input(Python 2)input(Python 2 und 3)
Hinweis: In Python 3 wurde raw_input in input umbenannt. Das alte input von Python 2 entspricht eval(input()) in Python 3.
Die raw_input-Funktion (Python 2)
raw_input([prompt]) liest eine Zeile von der Standardeingabe und gibt sie als String zurück (ohne das abschließende Newline-Zeichen).
#!/usr/bin/python
str = raw_input("Enter your input: ")
print("Received input is :", str)
Dies fordert Sie auf, einen beliebigen String einzugeben und zeigt denselben String auf dem Bildschirm an. Bei der Eingabe "Hello Python!" lautet die Ausgabe:
Enter your input: Hello Python Received input is : Hello Python
Die input-Funktion
input([prompt]) entspricht raw_input, geht jedoch davon aus, dass die Eingabe ein gültiger Python-Ausdruck ist und gibt das evaluierte Ergebnis zurück.
#!/usr/bin/python
str = input("Enter your input: ")
print("Received input is :", str)
Bei der Eingabe [x*5 for x in range(2,10,2)] ergibt sich:
Enter your input: [x*5 for x in range(2,10,2)] Received input is : [10, 20, 30, 40]
Dateien öffnen und schließen
Bisher haben Sie von der Standardein- und -ausgabe gelesen und geschrieben. Nun sehen wir, wie echte Datendateien verwendet werden.
Python stellt grundlegende Funktionen und Methoden bereit, um Dateien standardmäßig zu manipulieren. Die meisten Dateioperationen erfolgen über ein Dateiobjekt.
Die open-Funktion
Bevor Sie eine Datei lesen oder schreiben können, müssen Sie sie mit Pythons eingebauter open()-Funktion öffnen. Diese erstellt ein Dateiobjekt, das für weitere unterstützende Methoden genutzt wird.
Syntax
file_object = open(file_name[, access_mode][, buffering])
Parameter
- file_name – Ein String mit dem Namen der gewünschten Datei.
- access_mode – Bestimmt den Modus (lesen, schreiben, anhängen usw.). Standard ist Lesen (
r). Die möglichen Werte sehen Sie in der Tabelle unten. - buffering – 0: keine Pufferung; 1: Zeilenpufferung; >1: Puffergröße in Bytes; negativ: Systemstandard.
Dateizugriffsmodi
| Nr. | Modus & Beschreibung |
|---|---|
| 1 | r – Nur lesen. Dateizeiger am Anfang. Standardmodus. |
| 2 | rb – Nur lesen im Binärmodus. Dateizeiger am Anfang. |
| 3 | r+ – Lesen und schreiben. Dateizeiger am Anfang. |
| 4 | rb+ – Lesen und schreiben im Binärmodus. Dateizeiger am Anfang. |
| 5 | w – Nur schreiben. Überschreibt bestehende Datei oder erstellt neue. |
| 6 | wb – Nur schreiben im Binärmodus. Überschreibt oder erstellt neu. |
| 7 | w+ – Lesen und schreiben. Überschreibt oder erstellt neu. |
| 8 | wb+ – Lesen und schreiben im Binärmodus. Überschreibt oder erstellt neu. |
| 9 | a – Anhängen. Dateizeiger am Ende, falls Datei existiert; sonst neue Datei. |
| 10 | ab – Anhängen im Binärmodus. |
| 11 | a+ – Anhängen und lesen. Dateizeiger am Ende, falls Datei existiert. |
| 12 | ab+ – Anhängen und lesen im Binärmodus. |
Attribute des Dateiobjekts
Nach dem Öffnen einer Datei können Sie über das Dateiobjekt verschiedene Informationen abrufen:
| Nr. | Attribut & Beschreibung |
|---|---|
| 1 | file.closed – True, wenn Datei geschlossen, sonst False. |
| 2 | file.mode – Zugriffsmodus, mit dem die Datei geöffnet wurde. |
| 3 | file.name – Name der Datei. |
| 4 | file.softspace – False, wenn Leerzeichen bei print explizit erforderlich, sonst True. |
Beispiel
#!/usr/bin/python
fo = open("foo.txt", "wb")
print("Name of the file:", fo.name)
print("Closed or not :", fo.closed)
print("Opening mode :", fo.mode)
print("Softspace flag :", fo.softspace)
Ausgabe:
Name of the file: foo.txt Closed or not : False Opening mode : wb Softspace flag : 0
Die close()-Methode
Die close()-Methode eines Dateiobjekts leert alle nicht geschriebenen Puffer und schließt die Datei. Danach ist kein Schreiben mehr möglich.
Python schließt eine Datei automatisch, wenn das Referenzobjekt einer Datei einem anderen zugewiesen wird. Es ist jedoch gute Praxis, close() explizit aufzurufen.
fileObject.close()
Beispiel
#!/usr/bin/python
fo = open("foo.txt", "wb")
print("Name of the file:", fo.name)
fo.close()
Dateien lesen und schreiben
Das Dateiobjekt bietet Methoden, um das Lesen und Schreiben zu vereinfachen. Wir betrachten read() und write().
Die write()-Methode
Schreibt einen String in eine offene Datei. Python-Strings können Binärdaten enthalten, nicht nur Text. write() fügt kein Newline-Zeichen (\n) am Ende hinzu.
fileObject.write(string)
Beispiel
#!/usr/bin/python
fo = open("foo.txt", "wb")
fo.write("Python is a great language.\nYeah its great!!\n")
fo.close()
Die Datei foo.txt enthält nun:
Python is a great language. Yeah its great!!
Die read()-Methode
Liest einen String aus einer offenen Datei. Auch hier können Strings Binärdaten enthalten.
fileObject.read([count])
count ist die Anzahl der zu lesenden Bytes. Fehlt der Parameter, wird bis zum Dateiende gelesen.
Beispiel
#!/usr/bin/python
fo = open("foo.txt", "r+")
str = fo.read(10)
print("Read String is :", str)
fo.close()
Ausgabe:
Read String is : Python is
Dateipositionen
tell() gibt die aktuelle Position in der Datei an (nächstes Lesen/Schreiben erfolgt an dieser Byte-Position vom Dateianfang).
seek(offset[, from]) ändert die aktuelle Dateiposition. offset ist die Anzahl der zu verschiebenden Bytes. from legt die Referenzposition fest: 0 = Dateianfang, 1 = aktuelle Position, 2 = Dateiende.
Beispiel
#!/usr/bin/python
fo = open("foo.txt", "r+")
str = fo.read(10)
print("Read String is :", str)
position = fo.tell()
print("Current file position :", position)
fo.seek(0, 0)
str = fo.read(10)
print("Again read String is :", str)
fo.close()
Ausgabe:
Read String is : Python is Current file position : 10 Again read String is : Python is
Dateien umbenennen und löschen
Das Python-Modul os stellt Methoden für Dateioperationen wie Umbenennen und Löschen bereit. Zuerst importieren:
import os
Die rename()-Methode
Benötigt zwei Argumente: aktuellen Dateinamen und neuen Dateinamen.
os.rename(current_file_name, new_file_name)
Beispiel
#!/usr/bin/python
import os
os.rename("test1.txt", "test2.txt")
Die remove()-Methode
Löscht eine Datei durch Angabe des Dateinamens.
os.remove(file_name)
Beispiel
#!/usr/bin/python
import os
os.remove("test2.txt")
Verzeichnisse in Python
Alle Dateien liegen in Verzeichnissen. Das os-Modul bietet Methoden zum Erstellen, Entfernen und Wechseln von Verzeichnissen.
Die mkdir()-Methode
Erstellt ein Verzeichnis im aktuellen Verzeichnis.
os.mkdir("newdir")
Beispiel
#!/usr/bin/python
import os
os.mkdir("test")
Die chdir()-Methode
Ändert das aktuelle Verzeichnis.
os.chdir("newdir")
Beispiel
#!/usr/bin/python
import os
os.chdir("/home/newdir")
Die getcwd()-Methode
Zeigt das aktuelle Arbeitsverzeichnis an.
os.getcwd()
Beispiel
#!/usr/bin/python import os os.getcwd()
Die rmdir()-Methode
Löscht das als Argument übergebene Verzeichnis. Dessen Inhalt muss zuvor entfernt werden.
os.rmdir('dirname')
Beispiel
#!/usr/bin/python
import os
os.rmdir("/tmp/test")
Datei- und Verzeichnismethoden
Drei wichtige Quellen bieten umfangreiche Dienstprogramme für Dateien und Verzeichnisse unter Windows und Unix:
- Dateiobjekt-Methoden – Funktionen zur Dateimanipulation.
- OS-Objekt-Methoden – Methoden für Dateien und Verzeichnisse.
Python
- C Eingabe und Ausgabe (I/O) meistern: scanf() und printf() erklärt
- C-Dateiverwaltung: I/O mit fopen, fprintf, fread & fseek meistern
- Python I/O & Modul-Importe meistern: Praxisleitfaden
- Python File I/O: Dateioperationen, Lesen, Schreiben und Verwaltung meistern
- Verzeichnis- und Dateioperationen in Python meistern
- Datei- und Verzeichnisexistenz in Python prüfen – Ein praktischer Leitfaden
- Datei-I/O in C meistern: Erstellen, Öffnen & Verwalten von Dateien
- C-Header-Dateien verstehen: Typen, Verwendung und Best Practices
- C++ Datei-I/O: Lesen & Schreiben mit fstream
- C# Datei-E/A: Lesen, Schreiben & Stream-Verwaltung