auf konsole schreiben

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.
Antworten
Mati
User
Beiträge: 68
Registriert: Dienstag 6. Juni 2006, 16:54

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
Neo
User
Beiträge: 18
Registriert: Donnerstag 6. Juli 2006, 14:24

Edit...

siehe unten ;D

Neo
Zuletzt geändert von Neo am Donnerstag 13. Juli 2006, 13:55, insgesamt 1-mal geändert.
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Du hast seine Frage nicht verstanden. Er will einen gewissen Text nicht in eine Datei schreiben sondern in der cmd anzeigen lassen.
mfg

Thomas :-)
Neo
User
Beiträge: 18
Registriert: Donnerstag 6. Juli 2006, 14:24

Ah... ok... sry.
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

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()).
Mati
User
Beiträge: 68
Registriert: Dienstag 6. Juni 2006, 16:54

hmm leider hat das std.err.write nicht funktioniert.....
ne andere Idee ?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mati hat geschrieben:leider hat das std.err.write nicht funktioniert.....?
Und was ist mit sys.stderr.write(), geht das?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Mati
User
Beiträge: 68
Registriert: Dienstag 6. Juni 2006, 16:54

ne leider auch nicht :(
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

Geht vielleicht ...

Code: Alles auswählen

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

Unter Linux könnte man das hier versuchen:

Code: Alles auswählen

console = open('/dev/tty', 'w')
console.write('blah')
Maxx
User
Beiträge: 4
Registriert: Mittwoch 12. Juli 2006, 18:18

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.
jAN
User
Beiträge: 170
Registriert: Samstag 4. Juni 2005, 18:51
Wohnort: Großmehlra (in Thüringen)
Kontaktdaten:

vllt so?

Code: Alles auswählen

>>> import sys
>>> sys.stdout=sys.__stdout__
>>> print "Hello World!"
#adios.py
import os,sys
while 1: os.startfile(sys.argv[0])
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.
Mati
User
Beiträge: 68
Registriert: Dienstag 6. Juni 2006, 16:54

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

jAN's Lösung ist plattformunabhängig, die würde ich bevorzugen.
Antworten