Seite 1 von 1

auf konsole schreiben

Verfasst: Donnerstag 13. Juli 2006, 12:46
von Mati
Hallo,

ich starte eine anwendung und die bekommt ein pythonskript uebergeben.
Ein normales print bringt nichts. Nur in files kann ich schreiben um eine ausgabe zu erhalten. Wie kann ich auf die Konsole schreiben lassen - irgendwie erzwingen ???


Danke euch

Verfasst: Donnerstag 13. Juli 2006, 13:39
von Neo
Edit...

siehe unten ;D

Neo

Verfasst: Donnerstag 13. Juli 2006, 13:49
von Python 47
Du hast seine Frage nicht verstanden. Er will einen gewissen Text nicht in eine Datei schreiben sondern in der cmd anzeigen lassen.

Verfasst: Donnerstag 13. Juli 2006, 13:54
von Neo
Ah... ok... sry.

Verfasst: Donnerstag 13. Juli 2006, 14:17
von Rebecca
Du muesstest irgendwie an den stdout-Filedescriptor von dieser Anwendung kommen. Aber ob und wie das geht, haengt natuerlich von der Anwendung ab. Und da ja ein print anscheinend nicht vorgesehen ist, wird's wohl eher nicht gehen. Eventuell hast du Glueck und Fehlermeldungen werden durchgereicht (probier mal sys.stderr.write()).

Verfasst: Donnerstag 13. Juli 2006, 14:29
von Mati
hmm leider hat das std.err.write nicht funktioniert.....
ne andere Idee ?

Verfasst: Donnerstag 13. Juli 2006, 15:34
von Leonidas
Mati hat geschrieben:leider hat das std.err.write nicht funktioniert.....?
Und was ist mit sys.stderr.write(), geht das?

Verfasst: Donnerstag 13. Juli 2006, 15:47
von Mati
ne leider auch nicht :(

Verfasst: Donnerstag 13. Juli 2006, 21:56
von Masaru
Geht vielleicht ...

Code: Alles auswählen

import os
os.sys.stderr.write("xxx")

Verfasst: Freitag 14. Juli 2006, 07:50
von BlackJack
Unter Linux könnte man das hier versuchen:

Code: Alles auswählen

console = open('/dev/tty', 'w')
console.write('blah')

Verfasst: Samstag 15. Juli 2006, 10:44
von Maxx
BlackJack hat geschrieben:Unter Linux könnte man das hier versuchen:

Code: Alles auswählen

console = open('/dev/tty', 'w')
console.write('blah')
Also /dev/tty*** sind immer bestimmte Konsolen, aber nicht irgendeine. "print" sollte eigentlich auf die Konsole schreiben, aber die Desktops öffnen einfach kein Terminal-Fenster wo du drin lesen könntest. Da sollte es aber Optionen ala "im Terminal ausführen" geben.

Verfasst: Samstag 15. Juli 2006, 11:54
von jAN
vllt so?

Code: Alles auswählen

>>> import sys
>>> sys.stdout=sys.__stdout__
>>> print "Hello World!"

Verfasst: Samstag 15. Juli 2006, 23:22
von BlackJack
Maxx hat geschrieben:
BlackJack hat geschrieben:Unter Linux könnte man das hier versuchen:

Code: Alles auswählen

console = open('/dev/tty', 'w')
console.write('blah')
Also /dev/tty*** sind immer bestimmte Konsolen, aber nicht irgendeine.
Ich habe ja auch keine *** angegeben. ;-)

Das `/dev/tty` ohne eine Nummer sollte IIRC eigentlich immer die Konsole sein, von der aus der Prozess (indirekt) gestartet wurde. Wenn man da etwas ausgibt, dann wird in der Prozesshierarchie nach dem ersten Prozess gesucht, der mit einem `tty` verbunden ist, und dann wird dort die Ausgabe gemacht.

Verfasst: Montag 17. Juli 2006, 09:56
von Mati
danke euch!
sowohl das mit der console klappt von BlackJack als auch dasvon JAN mit sys.stdout=sys.__stdout__

zu was wuerdet ihr raten? was waere besser zu verwenden in diesem fall?

Verfasst: Montag 17. Juli 2006, 12:25
von BlackJack
jAN's Lösung ist plattformunabhängig, die würde ich bevorzugen.