Pythonでscheduleモジュールを使いタスクをスケジュール/自動化してみます。(Windows10)
そもそもscheduleモジュールなんなのか。構成に「Builder パターン」を使用する定期的なインプロセス・スケジューラーです。scheduleを使うと、Pythonの関数を事前に定義された間隔で定期的に実行できます。
■Python
今回のPythonのバージョンは、「3.8.2」を使用しています。
■pipを経由してscheduleモジュールをインストールする
scheduleモジュールを使っていきますので、まずpipを経由してscheduleモジュールをインストールします。
pip install schedule
インストールする際は、コマンドプロンプト上で上記のコマンドを入力し、Enterキーを押します。
Collecting schedule
Downloading schedule-0.6.0-py2.py3-none-any.whl (8.7 kB)
Installing collected packages: schedule
Successfully installed schedule-0.6.0
Enterキーを押すと、上記のメッセージが表示されます。「Successfully installed」と書かれていますので、正常にインストールは完了しました。
■scheduleモジュールを使い、タスクの自動化をやってみる
インストールは完了となりましたので、実際にタスクの自動化を行ってみます。
■コード
import schedule import time #hello worldを出力する関数の作成 def hello(): print("Hello World!!") #1分ごとにhello ()関数を呼び出す schedule.every(1).minutes.do(hello) #whileループを使用してこの関数を繰り返し呼び出す while True: # タスクを実行させるための処理 schedule.run_pending() time.sleep(2) #2秒間停止する。
タスクの自動化を行うために、上記のコードを記述します。scheduleモジュールと、定期的に実行させるために、timeモジュールをインポート。
今回は、テストで定期的に「Hello World!!」と出力してみますので、def文で出力する関数を作成します。作成後、定期的な時間に出力させるようにしますので、「schedule.every(1).minutes.do(hello)」と記述します。このように記述することで、1分ごとにhello ()関数を呼び出します。
そして、「schedule.run_pending()」でタスクを無限ループで実行するようにしてます。
■実行
上記のコードを、「task-automation.py」というファイルで保存し、コマンドプロンプトから実行してみます。
実行してみると、定義された間隔で定期的に、「Hello World!!」と出力させることができました。
■タスクのスケジュールの時間を操作する場合
今回は、「schedule.every(1).minutes.do(hello)」で1分ごとにhello ()関数を呼び出しましたが、下記のように、時間や曜日でタスクのスケジュールを設定することができます。
#特定の秒後に実行する schedule.every(1).seconds.do(hello) #1秒ごとに関数を呼び出します #1時間ごとに実行する schedule.every().hour.do(hello) #毎日、タスクを実行する schedule.every().day.do(hello) #特定の時間に毎日 schedule.every().day.at("7:30").do(hello) #helloは毎日、午前7時30分に実行する #特定の曜日にタスクを実行する schedule.every().monday.do(hello) #月曜日(monday)に実行する #特定の曜日と時間にタスクを実行する schedule.every().monday.at("7:30".do(hello) #毎週月曜日(monday)の午前7時30分に実行する
■定期的にWebブラウザを開くプログラムを作ってみる
■コード
import webbrowser import time import schedule #Webブラウザで開くURLを指定 url = "https://www.yahoo.co.jp/" #新規タブで開くURLを呼び出す関数を作成 def take_url(): webbrowser.open_new_tab(url) #スケジュールの設定 schedule.every(1).minutes.do(take_url) #無限ループの実行 while True: schedule.run_pending() time.sleep(1) #1秒間停止します。
定義された間隔で定期的に、「Hello World!!」と出力させるプログラムを作ってみましたが、定期的にWebブラウザを開くプログラムも作ってみます。Webブラウザを開く場合は、webbrowserモジュールをインポートします。今回は、Yahoo!JAPANのサイトをWebブラウザで開くように設定して、コマンドプロンプトから実行してみます。
実行してみると、Webブラウザが起動し新しいタブでYahoo!JAPANのサイトを開くことができました。
コメント