(Anfänger): Unterschied(e) zwischen raw_input() und sys.stdin.readline()

01/11/2010 - 21:37 von Gerd-Ulrich Meyer | Report spam
Hallo,

hab gerade meine allerersten Gehversuche in Phython (2.6) gemacht, komme
aus der Delphi-/Pascal-Welt und auf der Suche nach einer Scriptsprache
für "schnell mal eben was probieren" bei Python gelandet (Ich will jetzt
keine Diskussion über die Màchtigkeit von Python vom Zaun brechen).

Beim ersten "Hallo Welt"-Script

print 'Bitte Namen eingeben'
Eing = raw_input()
print 'Hallo ' + Eing

bin ich auf der Suche nach dem "raw_input" auch über das Konstrukt
"sys.stdin.readline()" gestolptert.
Wo ist denn der Unterschied zwischen diesen beiden Befehlen? Nur das der
Eine in Richtung Objektorientierung geht, kann doch nicht das einzige
sein, oder?

Vielen Dank shcon mal für geduldige Erklàrungen
und noch einen schönen Abend wünscht

Gerd-Ulrich Meyer
 

Lesen sie die antworten

#1 Peter Otten
01/11/2010 - 22:51 | Warnen spam
Gerd-Ulrich Meyer wrote:

hab gerade meine allerersten Gehversuche in Phython (2.6) gemacht, komme
aus der Delphi-/Pascal-Welt und auf der Suche nach einer Scriptsprache
für "schnell mal eben was probieren" bei Python gelandet (Ich will jetzt
keine Diskussion über die Màchtigkeit von Python vom Zaun brechen).



Du hast dich jedenfalls nicht vollkommen verirrt :)

Beim ersten "Hallo Welt"-Script

print 'Bitte Namen eingeben'
Eing = raw_input()
print 'Hallo ' + Eing

bin ich auf der Suche nach dem "raw_input" auch über das Konstrukt
"sys.stdin.readline()" gestolptert.
Wo ist denn der Unterschied zwischen diesen beiden Befehlen? Nur das der
Eine in Richtung Objektorientierung geht, kann doch nicht das einzige
sein, oder?



Objektorientierung ist in Python allgegenwàrtig, aber es wird kein Kult
damit getrieben; schließlich sind auch Funktionen in Python Objekte...

raw_input() ist erste Wahl für Benutzereingaben und unterstützt die
readline-Bibliothek:

import sys
sys.stdin.readline()






alpha^[[Hbeta
'alpha\x1b[Hbeta'
raw_input()






betaalpha
'betaalpha'

Ich habe zweimal alpha<pos1>beta eingegeben, das heißt (zumindest unter
Linux) ist raw_input() angenehmer für den Benutzer.

Die readline-Methode teilt sys.stdin mit allen dateiartigen ("file-like")
Objekten; sie wird heute fast nur noch verwendet, wenn eine Datei teils
zeilen- und teils blockweise mit read() gelesen werden soll. Für
ausschließlich zeilenweises Lesen einer Datei ist

instream = sys.stdin # z. B.
for line in instream:
...

sowohl eleganter als auch effizienter.

Peter

Ähnliche fragen