2016-10-03 52 views
1

我有暂停用户输入一个Python脚本(使用raw_input,最近我创建了这个脚本一个Django的web用户界面。现在,当我通过Django的执行脚本是因为它在等待输入后台暂停。如何检测脚本是否从Django或命令提示符运行?

如何确定如果脚本是由Django的或终端/ CMD /等跑了?我不想保持2流的代码,一个是网络,另一个用于终端。

+1

你为什么不重构你的代码?网络服务器可以通过一些占位符来输入可选的输入,告诉你所调用的任何东西,不要求进一步的输入。脚本不应该在乎什么叫它,就是他们用*来称呼它*。 – jonrsharpe

+0

如果要检查父进程,如果它是控制台或Web服务器? – auserdude

回答

1

只要问!

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

如果属实,则附加到控制台。

+0

它为终端(mac OS)和django输出“True”! (仅供参考:我已将脚本导入到views.py并在UBuntu上运行django)。 – user3784080

+0

@ user3784080嗯......我认为django会以不同的方式处理它的脚本。 – tdelaney

0

明确优于隐式。将您的交互功能封装在仅在执行​​部分时才会调用的功能中。从Django的部分,只用它作为一个图书馆。进行这种检查的大多数方法都是半神奇的,因此很脆弱。

相关问题