2016-10-03 6 views
1

私はジャンゴ経由でスクリプトを実行するとき、それはバックエンドで入力を待っていると今ポーズです。最近、私はこのスクリプトのDjangoのウェブUIを作成し、raw_inputを使用して(ユーザー入力を一時停止するPythonスクリプトを持っている。スクリプトがDjangoまたはコマンドプロンプトから実行されたかどうかを検出する方法はありますか?

スクリプトがジャンゴまたは端末/ CMDの/ etcから走ったかどうかはどのように判断することができますか?私は、コードの2つのストリーム、ウェブおよび端末用の別の1対1に維持する必要はありません。

+1

あなたのコードを少し改造してみませんか? Webサーバーは、オプションの入力用のいくつかのプレースホルダを渡すことができ、それ以上の入力を要求しないように呼び出しています。スクリプトは何を呼び出すかに気を付ける必要はありません。 – jonrsharpe

+0

コンソールまたはWebサーバーの場合、親プロセスを確認する方法はありますか? – auserdude

答えて

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上で明示的な

1

だけ頼む!

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

trueの場合は、コンソールにアタッチされています。

+0

端末(mac OS)とdjangoの両方に「真」を表示します! (参考:私はviews.pyにスクリプトをインポートし、Ubuntuでdjangoを実行しています)。 – user3784080

+0

@ user3784080 Hmmm ...私はdjangoがそのスクリプトを別の方法で扱うと仮定しました。 – tdelaney

0

が暗黙的よりも優れています。​​の部分が実行された場合にのみ呼び出される関数でインタラクティブ機能をラップします。 djangoの部分からは、ライブラリとして使うだけです。これらの種類のチェックを行うほとんどの方法は、半魔法であり、従って薄片である。

関連する問題