2016-10-03 47 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的部分,只用它作爲一個圖書館。進行這種檢查的大多數方法都是半神奇的,因此很脆弱。

相關問題