[Python-de] Pipes

Georg Mischler schorsch at schorsch.com
Mon Apr 11 01:55:44 CEST 2005


Marcus Habermehl wrote:

> Hallo.
>
> Nach dem ich jetzt das ganze Wochenende weiter herumexperimentiert habe,
> hab ich eine Lösung gefunden. :)
>
> Auch, wenn es jetzt doch nichts mit einer Pipe zu tun hat, hier mal
> meine gefundene Lösung:
>
> def ausfuehren():
>     child = pexpect.spawn('find /usr -type d')
>     while gtk.events_pending():
>         gtk.main_iteration()
>     line = child.readline()
>     while line:
>         while gtk.events_pending():
>             gtk.main_iteration()
>         tbuffer1.insert_at_cursor(line)
>         tview1.scroll_to_mark(tbmark1, 0.05, True, 0.0, 1.0)
>         line = child.readline()
>
> Oder einfach gesagt: Mit pexpect funktioniert das Ganze so, wie ich es
> mir vorgestellt habe. Auch wenn ich jetzt nach zwei Wochen freiwillig in
> die Geschlossene gehen würde. ;)

Ungetestet: Soweit ich es verstehe, sollte der gleiche Ansatz
auch mit dem Standard-Modul subprocess funktionieren:

def ausfuehren():
    child = subprocess.Popen(['find', '/usr', '-type', 'd'],
	    stderr=subprocess.PIPE)
    while gtk.events_pending():
        gtk.main_iteration()
    line = child.stdout.readline()
    while line:
        while gtk.events_pending():
            gtk.main_iteration()
        tbuffer1.insert_at_cursor(line)
        tview1.scroll_to_mark(tbmark1, 0.05, True, 0.0, 1.0)
        line = child.stdout.readline()


Aber vielleicht habe ich ja auch irgendeinen Haken dabei
übersehen... ;)


-schorsch

-- 
Georg Mischler  --  simulations developer  --  schorsch at schorsch com
+schorsch.com+  --  lighting design tools  --  http://www.schorsch.com/