|
Informatik Sek II |
Objektorientiertes Programmieren Python |
LFB.-Kurs W. Arnhold |
| [ Übersicht | vorige Seite | Ganz unten ] |
|
Python - Syntax Dateibearbeitung II |
|---|---|
Dateien : zeilenweise bearbeitenEtwas ist unschön: Wenn man eine gelesene Datei auf den Bildschirm ausgibt, bekommt man (wegen "print") immer Leerzeichen zwischen den Zeichen; wenn man sie in eine andere Datei umkopiert, geht es ohne. Wie kann man das umgehen? Wir verwenden als Einleseanweisung "readline". Es liest eine ganze Zeile auf einmal.
diese = open ("dateien1.py", "r")
while 1:
zeile = diese.readline()
if not zeile:
break
print zeile
diese.close()
print 'Hoppla, jetzt gibt es keine überflüssigen Leerzeichen mehr, '
print 'dafür aber Leerzeilen! Also noch mal!'
print 'Bitte
Wie kommt das? Es liegt daran, dass die Datei Zeilenwechselzeichen
enthält, die bei "readline" mitgelesen und nicht entfernt werden. Was
kann man tun? Man kann versuchen, sie gar nicht erst mitzulesen:
diese = open ("dateien1.py", "r")
while 1:
zeile = diese.readline()[:-1]
Das haben wir bei den Sequenzen gelernt. Etwas riskant ist es: wenn am
Ende der letzten Zeile ein Zeilenwechselzeichen fehlt, hacken wir uns das
letzte Zeichen weg. Besser wäre:
zeile = diese.readline()
if not zeile:
break
if zeile[-1] == '\n':
zeile = zeile[:-1]
print zeile
diese.close()
import sys
diese = open ("dateien1.py", "r")
while 1:
zeichen = diese.read(1)
if not zeichen:
break
sys.stdout.write(zeichen)
diese.close()
Ging doch gut, was?
Man beachte, dass "stdout" (die Bildschirmausgabe) nicht geöffnet und
geschlossen werden muss!
AnwendungsbeispielAuswertung einer SystemdateiNun ein etwas komplexeres Beispiel. Für ein Programm sollen die vom System verwendeten Protokollnummern gelesen und in einem Dictionary gespeichert werden. Betrachten Sie die Datei "protocols". Sie enthält Kommentarzeilen, die wie in Python mit einem Gartenzaun beginnen. Auch Leerzeilen (oder enthalten sie Leerzeichen?) sind zu sehen. Die eigentlichen Informationen stehen in den anderen Zeilen, die stets den gleichen Aufbau haben: Protokoll in Kleinbuchstaben, die Protokollnummer, das Protokoll noch mal in Großbuchstaben und ein Kommentar. Uns interessieren die ersten beiden Spalten. Schauen Sie dazu in die Python-Programmdatei "test_sysprot.py" und in die Datei, die gelesen werden soll "protocols". |
|
| [ Übersicht | vorige Seite | Ganz oben ] |
|
© W. Arnhold Oktober 2000 |