2

我有一个通常用完 cron 的 Python 脚本。有时,我想自己在(Unix)外壳中运行它,如果是这样,让它将其输出写入终端而不是写入日志文件。

确定脚本是否用完 cron 或在交互式 shell(我的意思是 bash、ksh 等,而不是 python shell)中的 pythonic 方法是什么?

我可以检查 TERM 环境变量是否存在?这是有道理的,但似乎看似简单......

os.isatty 可以以某种方式使用吗?

如果它有所作为,我正在使用 Python 2.6。谢谢!

4

2 回答 2

3

您可以检查您的标准输出是否连接到终端:

import sys
sys.stdout.isatty()

您可以使用 来做到这一点os.isatty,但这需要一个文件描述符,这不太简单:

import os
os.isatty(sys.stdout.fileno())
于 2013-02-27T20:15:07.257 回答
2

如果您真的需要检查这一点,Pavel Anossov 的答案就是这样做的方法,它与您最初的猜测几乎相同。

但是你真的需要检查这个吗?为什么不直接编写一个写入stdout和/或的 Python 脚本stderr,而您的cron工作可以重定向到日志文件?

或者,更好的是,使用该logging模块并让它写入syslog或任何其他合适的东西,如果有的话也写入终端?

于 2013-02-27T20:22:14.937 回答