如何判断Python脚本是否在交互模式下启动?
我希望我的脚本有两种不同的行为:一种是当它作为定时任务启动时的行为,另一种是当手动启动时的行为。我该如何判断它是被手动启动还是定时任务启动的呢?
补充说明:这个定时任务可以是一个cron作业,或者是通过Windows批处理文件在计划任务中启动的。
3 个回答
0
我建议你在用cron调用这个脚本的时候,加一个命令行的选项:
python yourscript.py -scheduled
然后在你的程序里:
import sys
if "-scheduled" in sys.argv:
#--non-interactive code--
else:
#--interactive code--
7
如果你想知道你是否是在从一个终端读取数据(这里不太清楚这个区分是否足够明确,请进一步说明),你可以使用下面的代码:
sys.stdin.isatty()
11
你只需要在计划任务中添加一个命令行开关,然后在你的脚本里检查这个开关,根据需要调整脚本的行为。明确的做法总是比模糊的好。
这种设计的一个好处是:无论你是怎么调用这个脚本的,你都能测试到这两种不同的行为。