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
Mehrzeiligen Input von der Konsole lesen
In welchem Zusammenhang willst du das? Eine feste Anzahl von Zeilen? Wozu willst du das einsetzen?
-
- User
- Beiträge: 44
- Registriert: Donnerstag 26. April 2007, 19:23
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"!
Das heißt, keine Feste Anzahl an Zeilen. Und es muss genau so funktionieren wie "sendmail -t -i"!
Eine unglaublich dämliche Idee von mir, aber vllt willst du es ja so oO'...
(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.)
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
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
Vielleicht steht da ja noch was sinnvolles drinne.
MfG EnTeQuAk
Ohne raw_input ist das einfacher:
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.
Code: Alles auswählen
print "Bitte Text eingeben. STRG+D zum Beenden drücken"
text = sys.stdin.read()
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Unter Windows ist es STRG+Z.lunar hat geschrieben:STRG+D (für End Of File, das ist die Kombination unter Linux, unter Windows kenne ich sie nicht)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
-
- User
- Beiträge: 44
- Registriert: Donnerstag 26. April 2007, 19:23
Super! Das funktioniert sehr gut!
-
- User
- Beiträge: 44
- Registriert: Donnerstag 26. April 2007, 19:23
Eine weitere Frage hätte ich jedoch noch:
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
To: adresse@gmx.de
Subject: Kilu.de Testmail!
From: absender@domain.de
samy-delux hat geschrieben:Eine weitere Frage hätte ich jedoch noch: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
To: adresse@gmx.de Subject: Kilu.de Testmail! From: absender@domain.de
Code: Alles auswählen
import email
message = email.message_from_string(mail)
print message['to']
print message['from']
-
- User
- Beiträge: 51
- Registriert: Donnerstag 22. November 2012, 21:50
Ich wollte das auch probieren, leider bekomme ich die Fehlermeldung:lunar hat geschrieben:Ohne raw_input ist das einfacher:
Jetzt kannst du ganze Romane schreibenCode: Alles auswählen
print "Bitte Text eingeben. STRG+D zum Beenden drücken" text = sys.stdin.read()
"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
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???
@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.
-
- User
- Beiträge: 51
- Registriert: Donnerstag 22. November 2012, 21:50
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...
-
- User
- Beiträge: 51
- Registriert: Donnerstag 22. November 2012, 21:50
Wenn ich das ganze in einer Python Shell ausführe, bekomme ich ebenfalls eine ähnliche Meldung: "AttributeError: read".
Da stimmt doch was nicht?
Da stimmt doch was nicht?
-
- User
- Beiträge: 51
- Registriert: Donnerstag 22. November 2012, 21:50
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"?
-
- User
- Beiträge: 51
- Registriert: Donnerstag 22. November 2012, 21:50
edit (D.post)
Zuletzt geändert von Remington Steele am Donnerstag 6. Dezember 2012, 15:51, insgesamt 1-mal geändert.