我有一个通常用完cron的Python脚本。有时,我想在(Unix)shell中自己运行它,如果是这样,让它将其输出写入终端而不是写入日志文件。
确定脚本是否已用完cron或交互式shell中的pythonic方法是什么(我的意思是bash,ksh等,而不是python shell)?
我可以检查是否存在TERM环境变量?这很有道理,但似乎看似简单......
可以以某种方式使用os.isatty吗?
如果它有所作为,我正在使用Python 2.6。谢谢!
答案 0 :(得分:3)
您可以检查您的标准输出是否已附加到终端:
import sys
sys.stdout.isatty()
你可以用os.isatty
来做,但这需要一个文件描述符,这不那么简单:
import os
os.isatty(sys.stdout.fileno())
答案 1 :(得分:2)
如果你真的需要检查一下,Pavel Anossov的答案就是这样做的方式,它和你最初的猜测几乎相同。
但你真的需要检查一下吗?为什么不写一个写入stdout
和/或stderr
的Python脚本,而你的cron
作业只能重定向到日志文件?
或者更好的是,使用logging
模块并让它写入syslog
或其他任何合适的模块,如果有,也写入终端?