Seite 1 von 1

Wie nutze ich eine ganz normale Pipe?

Verfasst: Dienstag 2. März 2010, 08:58
von Treibholz
Moin!

Wie nutze ich eine ganz normale Pipe?

also z.B.:

Code: Alles auswählen

tail -f /var/log/messages | ./machwasdamit.py
Wie kann ich die Ausgabe von tail nun innerhalb von machwasdamit.py nutzen? (nein, ich will es nicht mit os.popen() starten.)

Gruß
Treibholz[/code]

Verfasst: Dienstag 2. März 2010, 09:28
von philistion
Schau dir mal folgendes an:
http://docs.python.org/library/signal.html

Code: Alles auswählen

signal.signal(signal.SIGPIPE, handlerxy)

Verfasst: Dienstag 2. März 2010, 09:34
von Treibholz
Nee, das ist nicht, was ich suche. Das ist um Signale abzufangen und dann etwas zu tun. Eine Pipe ist kein Signal.

Verfasst: Dienstag 2. März 2010, 09:41
von philistion
Sry, war wohl noch etwas verschlafen.

Um von Unixpipes einzulesen musst du ja nur stdin öffnen, also z.B.

Code: Alles auswählen

import sys

for line in iter(sys.stdin.readline, ""):
    print "Piped: ", line
Jetzt kann ich folgenden Unix Befehl ausführen und es wird ausgegeben.
cat asdf.txt | python test.py

Verfasst: Dienstag 2. März 2010, 11:22
von mkesper
Mach dir das Leben leicht und ermögliche es, sowohl Dateiname als auch '-' für Input von stdin zu verwenden: http://docs.python.org/library/fileinput.html.

Verfasst: Dienstag 2. März 2010, 11:37
von Treibholz
danke, sys.stdin.readline war das, was ich gesucht hab...