WindowsでPythonをバックグラウンドで定期実行して自動化する

公開日:
目次

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の下にある検索などからタスクスケジューラを開き、「タスクの作成...」を選択します。
Image from Gyazo

タスク作成画面が開くので名前を入力して上のタブからトリガーを選択します。
Image from Gyazo

左下の新規ボタンをクリックします。
Image from Gyazo

設定で繰り返しの期間を選択します。

開始時刻のデフォルトは開いた時間になっているので、適宜変更して「OK」をクリックします。

Image from Gyazo

「操作」タブをクリックし、「新規」ボタンをクリックします。

Image from Gyazo

プログラム/スクリプト欄にpythonw.exeのパスを入力し、引数に実行したいスクリプトのパスを追加します。

Image from Gyazo

その他必要な設定(条件、設定など)があれば、適宜変更した後「OK」でタスクを作成します。
Image from Gyazo

これでバックグラウンドでpythonが定期実行されます。

batファイルを介した実行

さらに、スクリプトの実行条件が複雑である場合や、複数のスクリプトを一度に実行したい場合は、batファイルを作成して、そのbatファイルをタスクスケジューラから実行するように設定することもできます。

  1. テキストエディタを開き、下記の例のようにpythonw.exeと実行したいスクリプトのパスを記載した行を追加します。
C:\path\to\.venv\Scripts\pythonw.exe C:\path\to\script.py
  1. ファイルを.bat拡張子で保存します。
  2. タスクスケジューラでこの.batファイルを実行するように設定します。

活用してみてください。