我的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