我注意到卷曲可以判断我是否重定向其输出(在这种情况下,它会设置进度条)。
在Python脚本中有合理的方法吗?所以:
$ python my_script.py
未重定向
$ python my_script.py> output.txt的
重定向!
答案 0 :(得分:33)
import sys
if sys.stdout.isatty():
print "Not redirected"
else:
sys.stderr.write("Redirected!\n")
答案 1 :(得分:8)
实际上,您要在此处查看stdin
和stdout
是否相同。
$ cat test.py
import os
print os.fstat(0) == os.fstat(1)
$ python test.py
True
$ python test.py > f
$ cat f
False
$
较长但更传统的版本是同一个文件测试只是比较st_ino
和st_dev
。通常情况下,在Windows上,这些都是用某种东西的散列来伪造的,这样这种精确的设计模式就可以起作用。
答案 2 :(得分:4)
看看
os.isatty(fd)
(但我认为这不适用于Windows)