如何判断Python脚本是否在交互模式下启动?

3 投票
3 回答
1552 浏览
提问于 2025-04-15 13:38

我希望我的脚本有两种不同的行为:一种是当它作为定时任务启动时的行为,另一种是当手动启动时的行为。我该如何判断它是被手动启动还是定时任务启动的呢?

补充说明:这个定时任务可以是一个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

你只需要在计划任务中添加一个命令行开关,然后在你的脚本里检查这个开关,根据需要调整脚本的行为。明确的做法总是比模糊的好。

这种设计的一个好处是:无论你是怎么调用这个脚本的,你都能测试到这两种不同的行为。

撰写回答