Wie nutze ich eine ganz normale Pipe?

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
Treibholz
User
Beiträge: 3
Registriert: Dienstag 2. März 2010, 08:52
Kontaktdaten:

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]
philistion
User
Beiträge: 108
Registriert: Sonntag 7. Februar 2010, 14:16

Schau dir mal folgendes an:
http://docs.python.org/library/signal.html

Code: Alles auswählen

signal.signal(signal.SIGPIPE, handlerxy)
Treibholz
User
Beiträge: 3
Registriert: Dienstag 2. März 2010, 08:52
Kontaktdaten:

Nee, das ist nicht, was ich suche. Das ist um Signale abzufangen und dann etwas zu tun. Eine Pipe ist kein Signal.
philistion
User
Beiträge: 108
Registriert: Sonntag 7. Februar 2010, 14:16

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
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

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.
Treibholz
User
Beiträge: 3
Registriert: Dienstag 2. März 2010, 08:52
Kontaktdaten:

danke, sys.stdin.readline war das, was ich gesucht hab...
Antworten