如何检查Python脚本是否以交互方式启动?

3

我希望我的脚本具有两种行为,一种是作为计划任务启动时的行为,另一种是手动启动时的行为。如何测试交互性?

编辑:这可以是cron作业,也可以通过计划任务通过Windows批处理文件启动。


1
“Scheduled task”?由哪个软件启动?在什么平台上?“手动执行”?从IDLE?从命令行?在什么平台上?使用什么shell? - S.Lott
可能是在Python脚本中检查交互式shell的重复问题。 - ideasman42
3个回答

11

你应该在计划任务中添加一个命令行开关,并在脚本中检查它,根据需要修改行为。显式比隐式更好。

这种设计的一个好处是:无论如何调用脚本,你都可以测试两种不同的行为。


同意。使用awesomeApp正常运行脚本,并使用awesomeApp --batch作为批处理作业运行。 - scvalex

7

如果您想知道是否从终端读取(不确定是否足够区分,请澄清),您可以使用以下方法:

sys.stdin.isatty()

0
我建议在使用cron调用时,添加一个命令行开关: python yourscript.py -scheduled
然后在你的程序中:
import sys

if "-scheduled" in sys.argv:
    #--non-interactive code--
else: 
    #--interactive code--

1
至少要使用传统的“--scheduled”。 - Gregg Lind

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接