Mehrzeiligen Input von der Konsole lesen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
samy-delux
User
Beiträge: 44
Registriert: Donnerstag 26. April 2007, 19:23

Montag 20. August 2007, 21:15

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
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Montag 20. August 2007, 22:25

In welchem Zusammenhang willst du das? Eine feste Anzahl von Zeilen? Wozu willst du das einsetzen?
samy-delux
User
Beiträge: 44
Registriert: Donnerstag 26. April 2007, 19:23

Dienstag 21. August 2007, 06:04

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"!
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Dienstag 21. August 2007, 06:25

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.)
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

Dienstag 21. August 2007, 07:16

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
lunar

Dienstag 21. August 2007, 10:45

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.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dienstag 21. August 2007, 10:46

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.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
samy-delux
User
Beiträge: 44
Registriert: Donnerstag 26. April 2007, 19:23

Dienstag 21. August 2007, 13:54

Super! Das funktioniert sehr gut!
samy-delux
User
Beiträge: 44
Registriert: Donnerstag 26. April 2007, 19:23

Dienstag 21. August 2007, 15:57

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!
lunar

Dienstag 21. August 2007, 17:10

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']
Remington Steele
User
Beiträge: 51
Registriert: Donnerstag 22. November 2012, 21:50

Dienstag 4. Dezember 2012, 15:41

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...
Benutzeravatar
pixewakb
User
Beiträge: 1027
Registriert: Sonntag 24. April 2011, 19:43

Dienstag 4. Dezember 2012, 20:34

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???
BlackJack

Dienstag 4. Dezember 2012, 20:50

@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.
Remington Steele
User
Beiträge: 51
Registriert: Donnerstag 22. November 2012, 21:50

Mittwoch 5. Dezember 2012, 14:52

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...
Benutzeravatar
sparrow
User
Beiträge: 825
Registriert: Freitag 17. April 2009, 10:28

Mittwoch 5. Dezember 2012, 15:25

Hast du denn schon ausprobiert, was BlackJack gesagt hat?
Das Programm in der normalen Konsole ausgeführt?
Antworten