如何检测脚本是从Django运行还是命令提示符?

时间:2016-10-03 21:31:23

标签: python django

我有一个暂停用户输入的Python脚本(使用raw_input,最近我为这个脚本创建了一个Django Web UI。现在当我通过Django执行脚本时暂停,因为它正在等待在后端输入。

如何确定脚本是从Django还是终端/ cmd / etc运行?我不想维护2个代码流,一个用于Web,另一个用于终端。

3 个答案:

答案 0 :(得分:1)

请问!

>>> import os
>>> import sys
>>> os.isatty(sys.stdin.fileno())
True

如果为true,则表示您已连接到控制台。

答案 1 :(得分:1)

为什么不使用__main__https://docs.python.org/3/library/main.html

if __name__ == '__main__':
    print ('running as a script')
else:
    print ('running as a web app')

适用于python 2.7和3.x

答案 2 :(得分:0)

明确比隐含更好。将您的交互性包装在仅在__name__ == "__main__"部分执行时调用的函数中。从django部分,只需将其用作库。做这些检查的大多数方法都是半魔法的,因此很脆弱。