2009-08-16 11 views
2

私のスクリプトには、スケジュールされたタスクとして開始されたときと手動で開始されたときの2つの振る舞いがあります。インタラクティブ性をテストするにはどうしたらいいですか?Pythonスクリプトがインタラクティブに起動されたかどうかを確認するにはどうすればよいですか?

EDIT:これは、cronジョブでも、Windowsのバッチファイルでも、スケジュールされたタスクで開始することができます。

+1

を-scheduled ?どのソフトウェアによって始まりますか?どのプラットフォームですか? 「手動?アイドルから?コマンドラインから?どのプラットフォームですか?どの殻ですか? –

+0

[Pythonスクリプトでインタラクティブシェルをチェックする]の可能な複製(https://stackoverflow.com/questions/6108330/checking-for-interactive-shell-in-a-python-script) – ideasman42

答えて

7

あなたが

sys.stdin.isatty() 
11

を使用することができます(明確ではないことは、区別の十分であれば、明確にしてください)あなたは、端末から読んでいるかどうかを知りたい場合は、単純にコマンドラインスイッチを追加する必要がありますスケジュールされたタスクで実行し、スクリプト内でそれを確認し、適切な動作を変更します。明示的は暗黙的より優れています。

この設計の利点は、実際にスクリプトを呼び出す方法に関係なく、両方の動作をテストできることです。

+0

合意。通常awesomeAppでスクリプトを実行し、awesomeApp --batchでバッチジョブとして実行します。 – scvalex

0

あなたはクーロンでそれを呼び出しているとき、私はちょうどコマンドラインスイッチを追加したい:

Pythonのyourscript.pyは、 "スケジュールされたタスク" プログラムで、その後

import sys 

if "-scheduled" in sys.argv: 
    #--non-interactive code-- 
else: 
    #--interactive code-- 
+1

は、少なくとも従来の "スケジュールされた" –

関連する問題