目次
pythonでの自動化の基本として、スクリプトを作成したら定期実行したいですよね。
今回は、特にWindows環境でPythonスクリプトをバックグラウンドで定期実行する方法を紹介します。
毎回忘れるので備忘録...
pythonwを使ったバックグラウンド実行
通常、Pythonスクリプトはコマンドプロンプトやターミナルからpython スクリプト名.py
のように実行すると、そのプロセスがフォアグラウンド(コマンドプロンプトなどのシェルが起動する形)で実行され、実行中はコマンドプロンプトが占有されます。
しかし、pythonw
を使用すると、ウィンドウを表示せずにバックグラウンドでPythonスクリプトを実行することができます。
実行方法(解説なので急ぎの方は読み飛ばしてOK)
コマンドプロンプトやショートカットを使用して、Pythonスクリプトをpythonw
で実行します。
実行する場合は、pythonwのパスとpythonスクリプトのファイルパスを指定してください。
例えばpythonスクリプトが直下にあるディレクトリに移動した場合は下記のようになります。
C:[pythonw.exeのパス]\pythonw.exe スクリプト名.py
これにより、スクリプトがバックグラウンドで実行され、実行中も他の作業を続けることができます。
パスがわからない場合はwhereコマンドで探しましょう。
where pythonw
whereでダメな場合はwhere.exeにするといるかも。
where.exe pythonw
タスクスケジューラを使った定期実行
Pythonスクリプトを定期的に実行させたい場合は、Windowsのタスクスケジューラを利用すると便利です。
先ほどのpythonw
と組み合わせることで、定期的なバックグラウンド実行を自動化できます。
設定方法
まずWindowsの下にある検索などからタスクスケジューラを開き、「タスクの作成...」を選択します。
タスク作成画面が開くので名前を入力して上のタブからトリガーを選択します。
設定で繰り返しの期間を選択します。
開始時刻のデフォルトは開いた時間になっているので、適宜変更して「OK」をクリックします。
「操作」タブをクリックし、「新規」ボタンをクリックします。
プログラム/スクリプト欄にpythonw.exe
のパスを入力し、引数に実行したいスクリプトのパスを追加します。
その他必要な設定(条件、設定など)があれば、適宜変更した後「OK」でタスクを作成します。
これでバックグラウンドでpythonが定期実行されます。
batファイルを介した実行
さらに、スクリプトの実行条件が複雑である場合や、複数のスクリプトを一度に実行したい場合は、batファイルを作成して、そのbatファイルをタスクスケジューラから実行するように設定することもできます。
- テキストエディタを開き、下記の例のように
pythonw.exe
と実行したいスクリプトのパスを記載した行を追加します。
C:\path\to\.venv\Scripts\pythonw.exe C:\path\to\script.py
- ファイルを
.bat
拡張子で保存します。 - タスクスケジューラでこの
.bat
ファイルを実行するように設定します。
活用してみてください。