2

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

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

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

myscript.py "input" "add_param"

或通过管道

echo "input" | myscript.py "add_param"

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

4

1 回答 1

3

您可以使用sys.stdin.isatty().

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

>>> sys.stdin.isatty()
True
于 2013-10-22T15:51:45.073 回答