Pythonでscheduleモジュールを使いタスクをスケジュール/自動化してみる

Pythonでscheduleモジュールを使いタスクをスケジュール/自動化してみます。(Windows10)

そもそもscheduleモジュールなんなのか。構成に「Builder パターン」を使用する定期的なインプロセス・スケジューラーです。scheduleを使うと、Pythonの関数を事前に定義された間隔で定期的に実行できます。

■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のサイトを開くことができました。

コメント

タイトルとURLをコピーしました