【问题标题】:Determine if script is being piped to in Python 3确定脚本是否在 Python 3 中通过管道传输到
【发布时间】:2016-11-15 09:28:46
【问题描述】:

如果我的脚本在通过管道传输到它时与正常调用它时需要表现不同,我如何确定它是否在通过管道传输到?这是避免挂起所必需的。我不是在说仅仅检查stdin 是否为空。

【问题讨论】:

  • 为什么要特别关心输入是否是管道?是什么让你的程序需要表现不同的管道?你的程序应该为python yourprog.py < input.txtcat input.txt | python yourprog.py 做不同的事情吗?
  • @user2357112 真的有必要知道吗?无论如何,我解释了我为什么要这样做。

标签: python python-3.x stdin piping


【解决方案1】:

您可以测试您的程序的输入是否连接到 tty,这可能会有所帮助,具体取决于您的用例: $ python -c 'import sys; print(sys.stdin.isatty())' True $ echo hi | python -c 'import sys; print(sys.stdin.isatty())' False $ python -c 'import sys; print(sys.stdin.isatty())' < foo False

【讨论】:

  • 这会为非管道输入重定向提供误报,例如来自文件的输入。
最近更新 更多