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