标签: python pipe
我的python程序都接受来自命令行参数(sys.argv[1])和管道(sys.stdin)的主输入。
sys.argv[1]
sys.stdin
但它需要额外的参数,当主输入不存在时,这些参数会改变它们在sys.argv列表中的位置。
sys.argv
如何确定脚本是否被直接调用
myscript.py "input" "add_param"
或通过管道
echo "input" | myscript.py "add_param"
仅检查参数的数量是不够的。还有更多(可选)参数和 我还想为缺少的参数提供正确的错误消息。
答案 0 :(得分:3)
您可以使用sys.stdin.isatty()。
sys.stdin.isatty()
如果使用管道(|)执行脚本,则返回False。
|
>>> sys.stdin.isatty() True