我如何确定 python 脚本是通过管道插入它来调用还是直接调用的



我的python程序既接受来自命令行参数(sys.argv[1])的主要输入,也接受通过管道(sys.stdin)的主要输入。

但是它需要额外的参数,当主输入不存在时,这些参数将改变它们在sys.argv列表中的位置。

如何确定脚本是否直接调用

myscript.py "input" "add_param"

或通过管道

echo "input" | myscript.py "add_param"

仅检查参数的数量是不够的。还有更多(可选)参数和我还想为缺少的参数提供正确的错误消息。

您可以使用

sys.stdin.isatty() .

如果脚本是使用管道 (| ) 执行的,则返回 False。

>>> sys.stdin.isatty()
True

最新更新