bash Meldungen in ein Fester schreiben

Fragen zu Tkinter.
Antworten
engel66
User
Beiträge: 2
Registriert: Dienstag 14. März 2006, 14:37
Wohnort: Brandenburg die Stadt im Land

Hallo,

zu meinen ersten Schritten mit Python habe ich mal eine kleine Frage. Ich rufe mit os.system einen Befehl auf der eine ziemlich lange Ausgabe erzeugt und eine Weile dauern kann (rsynk). Nun möchte ich diese Ausgabe in ein Fenster umleiten und irgendwie fehlt mir eine Idee wie das geht. Diese Ausgabe soll auch so etwa in Echtzeit geschehen.

Wie geht das mit Tkinter?

Gruss Karsten
Benutzeravatar
Michael Schneider
User
Beiträge: 569
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Brandenburg

Hi Karsten,

worin liegt jetzt genau Dein Problem bzw. was hat Tkinter mit dem Terminalcommando zutun? Übrigens kann die Ausgabe erst erscheinen, wenn os.system(...) die Antwort vom Terminal bekommen hat. Was verstehst Du unter "in Echtzeit"?

Wenn ich kann, werde ich Dir gern helfen, sobald Du das Problem etwas näher erläuterst.

Grüße an die Heimat (-stadt),

der Michel
Diese Nachricht zersört sich in 5 Sekunden selbst ...
engel66
User
Beiträge: 2
Registriert: Dienstag 14. März 2006, 14:37
Wohnort: Brandenburg die Stadt im Land

Hallo Michel,

ich möchte für ein rsync die Meldungen abfangen die es erzeugt und in ein Fenster leiten. Wenn ich das rsync Kommando auf der Shell (Bash) eingebe flattern mir so einige Meldungen über den Bildschirm. Nun habe ich vor, das ganze zu automatisieren. Aber ich möchte auch nicht auf die Meldungen verzichten. Dazu müssen diese in ein Textfenster umgeleitet werden. Das soll aber während der Vorgang noch läuft geschehen. Die Ausgabe nach abgeschlossenem rsync die kann ich schon ausgeben aber nicht während.

War das einigermassen verständlich?

Gruss Karsten

P.S. bist du etwa emigrierter Brandenburger;-) ?
Benutzeravatar
Michael Schneider
User
Beiträge: 569
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Brandenburg

Hi Karsten,

"rsync" sagt mir leider nichts, darum habe ich zum Testen ein ls verwendet. Wenn ich mich nicht irre, laufen die os.system-Kommandos im Terminal nicht über die Standardausgabe, so dass wir mit sys.stdout nicht weiterkommen. :?
Daher habe ich mich hier mal im Forum umgesehen. Vielleicht kommen wir bei Deinem Problem mit einer popen-pipe weiter. Versuch mal das hier:

Code: Alles auswählen

import os, time

def get_output(sCommand): return os.popen3(sCommand)[1]

output = get_output("rsync ...")

for i in range(100):
	for _s in output.readlines(): 
		print "Zeit", time.time(), "	", _s.strip()
	time.sleep(1/10)
mit Deinem Kommando in Zeile 5. Die Zeit in jeder Zeile gilt nur zur Orientierung. Die Frage ist, ob Du die Ausgabe nach und nach bekommst, oder erst nach Abschluss des Kommandos.

Grüße,
der Michel

p.s. Bin gebürtiger Brandenburger (Quenz/WWS) und wohne noch fast da (Spätaussiedler). Dieses WE wieder daheim, wenn Du Zeit hast... :wink:
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Antworten