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

Python 如何检测脚本是否从Django或命令提示符运行?,python,django,Python,Django,我有一个暂停用户输入的Python脚本(使用raw_input),最近我为这个脚本创建了一个Django web UI。现在,当我通过Django执行脚本时,它会暂停,因为它在后端等待输入 我如何确定脚本是从Django还是terminal/cmd/etc运行的?我不想维护两个代码流,一个用于web,另一个用于terminal。问问吧 >>> import os >>> import sys >>> os.isatty(sys.stdin.f

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

我如何确定脚本是从Django还是terminal/cmd/etc运行的?我不想维护两个代码流,一个用于web,另一个用于terminal。

问问吧

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

如果为true,则连接到控制台。

为什么不使用
\uuuu main\uuuu


在Python2.7和3.x上工作显式比隐式好。将您的交互性包装在一个函数中,该函数仅在
\uuuuu name\uuuuuuu==“\uuuuu main\uuuuu”时调用
部分已执行。从django部分开始,只需将其用作库。执行此类检查的大多数方法都是半神奇的,因此不可靠。

为什么不稍微重新构造代码?Web服务器可以为可选输入传入一些占位符,告诉您正在调用的任何东西不要请求进一步的输入。脚本应该“我不必关心它的名称,只关心它的名称。如果它是控制台还是web服务器,检查父进程如何?它会为终端(mac OS)和django打印‘True’!(仅供参考:我已将脚本导入views.py并在UBuntu上运行django)@user3784080 Hmmm…我想django会以不同的方式处理它的脚本。
if __name__ == '__main__':
    print ('running as a script')
else:
    print ('running as a web app')