return print ausgabe

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
moesibaer
User
Beiträge: 16
Registriert: Donnerstag 27. Dezember 2007, 15:54
Kontaktdaten:

Samstag 29. Dezember 2007, 16:50

Hallo,

ich habe arbeite gerade ein bischen mit pxssh. Ich erstelle damit eine SSH Verbindung zu einem beliebigen Host und setze dort Kommandos ab.

Mein Problem ist nun die Rückgabe. Der String von der pts-Konsole beinhaltet natürlich einen Haufen von Kodierungen die mit dem print statement wunderschön umgesetzt werden. Da die Funktion jedoch von einem Ajaxscript per HTML Request aufgerufen wird, muss ich den String returnen. Daher sieht die Rückgabe entsprechend häßlich aus.

Gibt es eine Möglichkeit das print statement als Funktion mit Rückgabe aufzurufen oder die Konsolenausgabe nach HTML umzuformen?

Vielen Dank
[/code]
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Samstag 29. Dezember 2007, 17:33

Das ``print``-Statement schreibt normalerweise nach ``sys.stdout``, also kannst du dein eigenes file-like-object dort hin setzen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
moesibaer
User
Beiträge: 16
Registriert: Donnerstag 27. Dezember 2007, 15:54
Kontaktdaten:

Samstag 29. Dezember 2007, 18:33

file-like object bedeutet StringIO nicht wahr?! Wie setze ich das den auf den Stdout? Sorry so tief bin ich noch nicht in pyhon eingedrungen.

Danke
BlackJack

Samstag 29. Dezember 2007, 18:52

Einfach den Namen an das "file-like" binden: ``sys.stdout = file_like``.
moesibaer
User
Beiträge: 16
Registriert: Donnerstag 27. Dezember 2007, 15:54
Kontaktdaten:

Samstag 29. Dezember 2007, 18:58

Code: Alles auswählen

import sys
from StringIO import StringIO

old = sys.stdout
file_like = StringIO()
sys.stdout = file_like
print "blub"
sys.stdout = old
file_like.read()
Die Ausgabe von ´´file_like.read()´´ ist aber leer???
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Samstag 29. Dezember 2007, 19:32

Code: Alles auswählen

import sys
from StringIO import StringIO

file_like = StringIO()
sys.stdout = file_like
print 'blub'
sys.stdout = sys.__stdout__
print file_like.getvalue()
My god, it's full of CARs! | Leonidasvoice vs Modvoice
moesibaer
User
Beiträge: 16
Registriert: Donnerstag 27. Dezember 2007, 15:54
Kontaktdaten:

Sonntag 30. Dezember 2007, 00:54

DANKE, klappt jetzt wunderbar. Vielen Dank für die Hilfe!
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Sonntag 30. Dezember 2007, 14:13

Warum so umständlich?

Code: Alles auswählen

import sys
from StringIO import StringIO

file_like = StringIO()
print >>file_like, 'blub'
print file_like.getvalue()
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Sonntag 30. Dezember 2007, 14:38

Joghurt hat geschrieben:Warum so umständlich?
Es ist vielleicht nicht immer möglich, jedes ``print``-Statement umzuschreiben, daher ist die Umleitung von ``sys.stdout`` sehr praktisch.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Antworten