########################################## Eingabe und Ausgabe ########################################## Bildschirmausgabe ==================== Die Textausgabe auf dem Bildschirm mit dem Schlüsselwort ``print`` wurde bereits in einigen Beispielen benutzt. Deshalb werden an dieser Stelle die wichtigsten Varianten nur noch anhand einiger Beispiele zusammengefasst.:: print "Hello World" #Nur Text for i in range(4): #Formatierte Ausgabe for j in range(3): print "%3d mal %3d ist gleich %4d" % (i,j,i*j) print 'Erster Teil', #Unterdrueckung des Zeilenumbruchs print 'Zweiter Teil' Tastatureingaben =================== Für die Eingabe von Daten über die Tastatur ist in Python die Funktion ``input(Anzeigetext)`` definiert. Der Parameter ``Anzeigetext`` ist ein String, der am Bildschirm angezeigt wird und zur Tastatureingabe auffordern soll. Beim Aufruf der Funktion wird der Programmablauf solange angehalten, bis der Anwender eine Tastatureingabe vornimmt und diese mit ``Return`` abschließt. Der Rückbabewert der Funktion ist die interpretierte Tastatureingabe. :: eingabe=input("Geben Sie etwas ein\n") print eingabe Nach Eingabe einer zusammenhängenden Zeichenkette wird diese am Bildschirm ausgegeben. Enthält die Eingabe einen Whitespace-Character, bricht das Programm mit einer Fehlermeldung ab. Möglich ist jedoch eine solche Eingabe wenn sie mit Anführungszeichen versehen wird. Die Eingabe von z.B. 4*10 ergibt die Ausgabe 40. An diesen Beispielen wird deutlich, dass die Funktion ``input`` die Tastatureingabe zunächst interpretiert und dann eine Referenz auf den interpretierten Wert liefert. Ist dieses Verhalten unerwüncht kann anstelle von ``input()``, die Funktion ``raw_input(Anzeigetext)`` verwendet werden. Diese Funktion liefert jede mögliche Tastatureingabe als String zurück. Ein und Ausgabe aus/in Dateien =============================== Ein- und Ausgabe werden in Python über Dateiobjekte realisiert. Die Funktion ``open(filename,mode)`` liefert eine Referenz auf ein solches Dateiobjekt. Der Parameter ``filename`` ist ein String, der den Dateiname oder Pfad und Name definiert. Der zweite Parameter ist ebenfalls ein String, der die Zugriffsart definiert, z.B. ``"w"`` für schreibenden und ``"r"`` für lesenden Zugriff. Mit dem Mode ``"a"``, können neue Daten an eine bestehende Datei angehängt werden. Nach Benutzung eines Dateiobjekts muss dieses mit der Methode ``close()`` geschlossen werden. Eingabe aus Datei ------------------ Mit dem folgenden Programm wird der gesamte Inhalt der spezifizierten Datei in den String ``dateiinhalt`` geschrieben :: fin = open("Beispieldatei1.txt","r") dateiinhalt = fin.read() print "Typ: ",type(dateiinhalt) print "Inhalt:\n", dateiinhalt fin.close() Die Ausgabe ist:: Typ: Inhalt: Diese Zeile enthält nur 2 Zeilen und sonst nichts. Für das Dateiobjekt ``fin`` kann anstelle der ``read()``-Methode, die ``readline()``-Methode aufgerufen werden. Mit ihr wird der Dateiinhalt zeilenweise in Stringvariablen gelesen. Das Programm:: fin = open("Beispieldatei1.txt","r") ersteZeile = fin.readline() zweiteZeile = fin.readline() nocheineZeile = fin.readline() print "Zeile 1: ",ersteZeile print "Zeile 2: ",zweiteZeile print "Zeile 3: ",nocheineZeile fin.close() erzeugt die Ausgabe:: Zeile 1: Diese Zeile enthält nur 2 Zeilen Zeile 2: und sonst nichts. Zeile 3: Die Methode ``readlines()`` liefert eine Liste von Strings, wobei jedes Listenelement eine Zeile der eingelesenen Datei enthält. Die effizienteste Methode eine Datei auszulesen besteht jedoch darin, über das Dateiobjekt wie folgt zu iterieren:: fin = open("Beispieldatei1.txt","r") for line in fin: print line fin.close() Damit wird die gleiche Ausgabe erzeugt wie im Beispiel der ``readline()`` Methode. Schreiben in Datei ------------------- Ein für den schreibenden Zugriff angelegtes Dateiobjekt stellt u.a. die Methode ``write(string)`` bereit, mit der in die spezifizierte Datei geschrieben wird:: fout=open("Beispieldatei2.txt","w") fout.write("Erster String") fout.write("Zweiter String") fout.close() Diese Anweisungsfolge öffnet eine Datei mit dem spezifizierten Namen für den schreibenden Zugriff. Falls die Datei noch nicht existiert, wird sie neu angelegt. Danach werden die zwei Strings unmittelbar nacheinander in eine Zeile der Datei geschrieben. Die Funktion ``write(string)`` hat auch einen Rückgabewert, nämlich die Anzahl der geschriebenen Zeichen. Mit der Funktion ``writelines(Stringliste)`` kan eine Liste von Strings in die Datei geschrieben werden.