2010-11-24 19 views
9

Ich habe ein kleines Python-Dienstprogramm, das nur als eine Pipe ausgeführt werden soll. Ich möchte, dass es die Hilfemeldung ausgibt, wenn es eigenständig ausgeführt wird. Wie kann ein Prozess wissen, ob er als Rohr verwendet wird? Vergleichen sys.stdin und sys.__stdin__ funktioniert nicht.Überprüfen Sie, ob der Prozess als eine Pipe ausgeführt wird

Antwort

13

können Sie isatty verwenden:

if sys.stdin.isatty(): 

Es True sein wird, wenn die Standardeingabe ein tty ist, das es in etwa bedeutet, direkt verwendet wird ist, außerhalb eines Rohres.

+2

Auch 'if sys.stdout.isatty()' für das Gegenteil. – isaaclw

+0

Nur ein Hinweis: Wenn Sie Python in einer CI-Umgebung ala travis, jenkins oder gitlab-ci starten, kann es sein, dass 'sys.stdin.isatty()' immer 'False' ist. –

Verwandte Themen