web-dev-qa-db-ja.com

スケジュールPythonスクリプト-Windows 7

pythonスクリプトを定期的に実行したい。windows7を実行している。これを達成する最良の方法は?最も簡単な方法は?

46
Btibert3

次のようにコマンドラインで実行できます。

schtasks /Create /SC HOURLY /TN PythonTask /TR "PATH_TO_PYTHON_EXE PATH_TO_PYTHON_SCRIPT"

これにより、「PythonTask」と呼ばれる1時間ごとのタスクが作成されます。 HOURLYをDAILY、WEEKLYなどに置き換えることができます。PATH_TO_PYTHON_EXEはC:\ python25\python.exeのようになります。コマンドラインに次のように記述して、さらに例を確認してください。

schtasks /?

それ以外の場合は、タスクスケジューラを開いてGUIから実行できます。お役に立てれば。

59
Glen Robertson

コントロールパネルのGUI(「スケジュールされたタスク」と呼ばれる)を使用してタスクを追加できます。タスクのほとんどは自明のはずですが、次の2つの点に注意してください。

  • プログラムパスとして_C:\python27\python.exe_を、引数としてスクリプトへのパスを必ず入力してください。

  • _Run whether user is logged on or not_を選択すると、エラーが発生します:The directory name is invalid (0x87010B)。 _Run only when user is logged on_を選択すると、この問題が「解決」します。

これを理解するのにかなり時間がかかりました...

52
Martin Tournoij

これを行う簡単な方法は、遅延ループを使用して継続的に実行するスクリプトを作成することです。例えば:

def doit():
    print "doing useful things here"

if __== "__main__":
    while True:
        doit()
        time.sleep(3600) # 3600 seconds = 1 hour

その後、このスクリプトを実行したままにしておくと、1時間に1回ジョブが実行されます。

これは問題に対する1つのアプローチにすぎないことに注意してください。タスクスケジューラのようなOSが提供するサービスを使用することは、スクリプトを常に実行したままにすることを回避する別の方法です。

11
Greg Hewgill