Python 检查进程是否作为管道运行

Python 检查进程是否作为管道运行,python,process,pipe,stdio,Python,Process,Pipe,Stdio,我有一个小Python实用程序,它应该只作为管道运行。我希望它在单独运行时打印出帮助消息。进程如何知道它是否被用作管道。比较sys.stdin和sys.\uuu stdin\uuuu不起作用。您可以使用isatty: if sys.stdin.isatty(): 如果标准输入是tty,则为True,这大致意味着它在管道外直接使用。如果sys.stdout.isatty()则为相反。只是一个提示:如果在CI环境ala travis、jenkins或gitlab CI中启动python,sys.s

我有一个小Python实用程序,它应该只作为管道运行。我希望它在单独运行时打印出帮助消息。进程如何知道它是否被用作管道。比较
sys.stdin
sys.\uuu stdin\uuuu
不起作用。

您可以使用
isatty

if sys.stdin.isatty():

如果标准输入是tty,则为
True
,这大致意味着它在管道外直接使用。

如果sys.stdout.isatty()则为相反。只是一个提示:如果在CI环境ala travis、jenkins或gitlab CI中启动python,
sys.stdin.isatty()
可能总是
False