Seite 1 von 2
Mehrzeiligen Input von der Konsole lesen
Verfasst: Montag 20. August 2007, 21:15
von samy-delux
Hey Leute,
Ich würde gerne wissen, wie ich einen mehrzeiligen Input von der Konsole aus ermöglichen kann.
raw_input() nimmt ja immer nur eine Zeile an!
so long,
Samy
Verfasst: Montag 20. August 2007, 22:25
von BlackVivi
In welchem Zusammenhang willst du das? Eine feste Anzahl von Zeilen? Wozu willst du das einsetzen?
Verfasst: Dienstag 21. August 2007, 06:04
von samy-delux
Ich würde gerne mein sendmail durch ein python Skript ersetzen, was die mail auf bestimmte smtp server weiterverteilt!
Das heißt, keine Feste Anzahl an Zeilen. Und es muss genau so funktionieren wie "sendmail -t -i"!
Verfasst: Dienstag 21. August 2007, 06:25
von BlackVivi
Eine unglaublich dämliche Idee von mir, aber vllt willst du es ja so oO'...
Code: Alles auswählen
rows = ""
print "Hier kommt eine mehrzeilige Eingabe:"
while True:
rows += raw_input()
if rows.endswith("\n"):
break
else:
rows += "\n"
print rows
(Die mehrzeilige Eingabe endet beim 2maligen Druck auf Enter... Sozusagen eine leere Eingabe machst. Das Problem ist halt, dass du keine wirklichen Absätze machen kannst... aber da kannst du ja auch was irgendwie herausfinden, vllt.)
Verfasst: Dienstag 21. August 2007, 07:16
von EnTeQuAk
Ansonsten noch ein alter Beitrag meinerseits:
http://www.python-forum.de/topic-7216.html?highlight=
Vielleicht steht da ja noch was sinnvolles drinne.
MfG EnTeQuAk
Verfasst: Dienstag 21. August 2007, 10:45
von lunar
Ohne raw_input ist das einfacher:
Code: Alles auswählen
print "Bitte Text eingeben. STRG+D zum Beenden drücken"
text = sys.stdin.read()
Jetzt kannst du ganze Romane schreiben, und danach drückst du einfach STRG+D (für End Of File, das ist die Kombination unter Linux, unter Windows kenne ich sie nicht), und dein Roman steht in
text.
Verfasst: Dienstag 21. August 2007, 10:46
von Leonidas
lunar hat geschrieben:STRG+D (für End Of File, das ist die Kombination unter Linux, unter Windows kenne ich sie nicht)
Unter Windows ist es STRG+Z.
Verfasst: Dienstag 21. August 2007, 13:54
von samy-delux
Super! Das funktioniert sehr gut!
Verfasst: Dienstag 21. August 2007, 15:57
von samy-delux
Eine weitere Frage hätte ich jedoch noch:
Code: Alles auswählen
To: adresse@gmx.de
Subject: Kilu.de Testmail!
From: absender@domain.de
Wie kann ich hieraus am besten die Werte "To:" und "From:" isolieren? In PHP wäre das für mich kein Problem, aber in Python bin ich noch nicht so bewandert!
Verfasst: Dienstag 21. August 2007, 17:10
von lunar
samy-delux hat geschrieben:Eine weitere Frage hätte ich jedoch noch:
Code: Alles auswählen
To: adresse@gmx.de
Subject: Kilu.de Testmail!
From: absender@domain.de
Wie kann ich hieraus am besten die Werte "To:" und "From:" isolieren? In PHP wäre das für mich kein Problem, aber in Python bin ich noch nicht so bewandert!
Code: Alles auswählen
import email
message = email.message_from_string(mail)
print message['to']
print message['from']
Re:
Verfasst: Dienstag 4. Dezember 2012, 15:41
von Remington Steele
lunar hat geschrieben:Ohne raw_input ist das einfacher:
Code: Alles auswählen
print "Bitte Text eingeben. STRG+D zum Beenden drücken"
text = sys.stdin.read()
Jetzt kannst du ganze Romane schreiben
Ich wollte das auch probieren, leider bekomme ich die Fehlermeldung:
"Attributeerror: Debug output instance has no attribute 'read'
Bei mir sieht das so aus
Code: Alles auswählen
def test:
text = None
(...)
text = sys.stdin.read()
print text
Woran liegt das? Danke...
Re: Mehrzeiligen Input von der Konsole lesen
Verfasst: Dienstag 4. Dezember 2012, 20:34
von pixewakb
Wo ist der Vorteil dabei das über die Konsole abzuwickeln? Warum nicht ein GUI schreiben und die E-Mails dort reinsetzen? Sollte doch auch laufen???
Re: Mehrzeiligen Input von der Konsole lesen
Verfasst: Dienstag 4. Dezember 2012, 20:50
von BlackJack
@Remington Steele: Du solltest das Programm vielleicht auch in einer Textkonsole ausführen und nicht in einer IDE die sonstwas am Laufzeitsystem von Python verbiegt.
Re: Mehrzeiligen Input von der Konsole lesen
Verfasst: Mittwoch 5. Dezember 2012, 14:52
von Remington Steele
hm also mein Programm ist dermassen simpel und der Dateninput relativ klein, so dass das Programm wohl meist nur eine Sekunde läuft. Hättet Ihr doch einen Tipp, was an meiner Lösung falsch ist? Danke...
Re: Mehrzeiligen Input von der Konsole lesen
Verfasst: Mittwoch 5. Dezember 2012, 15:25
von sparrow
Hast du denn schon ausprobiert, was BlackJack gesagt hat?
Das Programm in der normalen Konsole ausgeführt?
Re: Mehrzeiligen Input von der Konsole lesen
Verfasst: Mittwoch 5. Dezember 2012, 15:50
von Remington Steele
Wenn ich das ganze in einer Python Shell ausführe, bekomme ich ebenfalls eine ähnliche Meldung: "AttributeError: read".
Da stimmt doch was nicht?
Re: Mehrzeiligen Input von der Konsole lesen
Verfasst: Mittwoch 5. Dezember 2012, 16:44
von karolus
Nicht in der Python_Shell in der normalen Shell:
>> python dein_Script.py
Karolus
Re: Mehrzeiligen Input von der Konsole lesen
Verfasst: Donnerstag 6. Dezember 2012, 14:35
von Remington Steele
Hm aber wenn ich das jetzt in der Eingabeaufforderung eingebe, kann ich nicht mehrere Zeilen kopieren und diese einfügen, wie ich es mir vorstelle. Gibt es noch ein anderes "Shell"?
Re: Mehrzeiligen Input von der Konsole lesen
Verfasst: Donnerstag 6. Dezember 2012, 14:52
von JonasR
KLar geht das, bin mir nicht sicher was du macht oO
Re: Mehrzeiligen Input von der Konsole lesen
Verfasst: Donnerstag 6. Dezember 2012, 15:50
von Remington Steele
edit (D.post)