★悩み★
・PyAutoGUIのFAILSAFEってどういうときに使うの?
・そもそもFAILSAFEって何?使わなかったらどうなる?
・PyAutoGUIで作った自動化処理を途中で停止させる方法を知りたい。
こういった「悩み」に答えます。
★本記事の内容★
① PyAutoGUIとは
➁ PyAutoGUIのFAILSAFEとは?
➂ FAILSAFEでPyAutoGUIの自動操作を停止させる方法
本記事を実践したことで、10分くらいで「PyAutoGUIで作成した自動化処理を途中で停止できる」プログラムを作れました(下の動画参照)。
記事の前半では「PyAutoGUIとは?」や「PyAutoGUIのインストール方法」を解説します。
記事の後半では「FAILSAFEを使うメリットや利用場面」から「プログラムを作成する方法」までを紹介します。
この記事を読み終えることで、「PyAutoGUIで任意の処理が終わるまで処理を待機」できる状態になります。
PyAutoGUIとは?
「PyAutoGUIとは?」/「PyAutoGUIの特徴」/「PyAutoGUIのユースケース(利用場面)」に関しては、以下の記事をご覧ください。
>> 【要点】PyAutoGUIとは?初心者向けに特徴から使い方までを図解
また、PyAutoGUIのインストール方法に関しては、以下の記事をご覧ください。
>> 【最短5分】PyAutoGUIをWindowsにインストールする手順
>> 【最短5分】UbuntuにPyAutoGUIをインストールする手順
>> 【最短5分】MacにPyAutoGUIをインストールする手順
ウェブブラウザなどの画面操作を自動化をしたい場合、PyAutoGUIを使って無料で実現できます。
まずは、「FAILSAFEとは何か?」から紹介しますね。
PyAutoGUIのFAILSAFEとは?
「PyAutoGUIのFAILSAFEとは?」に関してご紹介します。
★ご紹介事項★
・そもそもFAILSAFEとは?
・FAILSAFEを使わなかったらどうなる?
・FAILSAFEの利用を検討する方法
以降で、上記の各項目に関してご説明します。
そもそもFAILSAFEとは?
「そもそもFAILSAFEとは?」に関して解説します。
どのような機能なのかを簡単に説明しますね。
公式サイトでは、以下のように説明しています。
少し難しい英語で説明されています。
以下に簡単な文言に置き換えたものを記載しますね。
★PyAutoGUIのFAILSAFEとは何か?★
本機能を使うと、PyAutoGUIで作成した自動処理中にマウスを「左上」「右上」「左下」「右下」のいずれかに移動させることで実行中の自動化処理を緊急停止できます。
緊急停止時には、「FailSafeException」の例外が発生します。
FAILSAFEを使わなかったらどうなる?
「FAILSAFEを使わなかったらどうなる?」に関して解説します。
使わなかった場合、どのような不都合があるのかを簡単にご紹介しますね。
FAILSAFEを使わなかった場合、PyAutoGUIで自動化した処理を「途中で停止できない」ことがあります。
★途中停止できない場面★
・PyAutoGUIでマウス操作している為、プログラムの停止ボタンを押せない
・PyAutoGUIでキーボード操作しているため、Ctrl+cを入力できない
また、「プログラムの停止ボタン」や「Ctrl+c」でPyAutoGUIの自動処理を途中で停止させた場合、以下の不都合が生じる場合があります。
★FAILSAFEを使わずに途中停止させた場合に発生する不都合の例★
PyAutoGUI経由でキーボード入力中に「Ctrl+c」で途中停止させた場合、以降のキーボード操作で意図しない挙動が起こりえます。
例えば、PyAutoGUIで「Shift」入力中に「Ctrl+c」で途中停止させた場合、「Shift」が押しっぱなしの状態になることがあります。
その状態になると、「a」のキーを入力した場合に、「Shift+a」が入力されたと判断されてしまいます。
「Shift」を何度か押すと、この状態を解決できます。
FAILSAFEの利用を検討する方法
「FAILSAFEの利用を検討する方法」に関して説明します。
先ほどの内容より、「とりあえず設定しておけばいいのでは?」と思いかもしれません。ですが、実はそうではないです。
本機能を使うかどうかは、「PyAutoGUIで自動化する処理の内容」で考えましょう。
★FAILSAFEの利用検討の基準★
・利用しない:自動化したい処理で画面の四隅にマウスを動かす必要がある
・利用する:上記以外
なにも検討せずに、設定をONにしてしまうと、意図せずに自動化処理が途中停止してしまうことがあります。
PyAutoGUIで自動化した処理を途中で安全に緊急停止させたい場合、FAILSAFEを使いましょう。
以降で、設定方法に関してご紹介しますね。
FAILSAFEでPyAutoGUIの自動操作を停止させる方法
「FAILSAFEでPyAutoGUIの自動操作を停止させる方法」に関してご紹介します。
★ご紹介事項★
① FAILSAFEの構文
➁ FAILSAFEとマウス操作の組み合わせ方法
➂ FAILSAFEで自動操作を停止させるプログラムの作成と実行
以降で、上記の各項目に関してご説明します。
FAILSAFEの構文
構文に関して説明します。
PyAutoGUIで自動化した処理を途中で安全に緊急停止させたい場合、PAUSEを使うと簡単に実現できます。
構文は、以下となります。
★FAILSAFEのリファレンス★
処理:Trueにすることで、緊急停止機能を使える
使い方:
緊急停止機能を使いたい場合:pyautogui.FAILSAFE = True
緊急停止機能を使いたくない場合:pyautogui.FAILSAFE = False
初期値:False
参照:FAILSAFEのリファレンス(公式サイト)
FAILSAFEとマウス操作の組み合わせ方法
「FAILSAFEとマウス操作の組み合わせ方法」に関して解説します。
ある自動化処理に失敗したら、即座にプログラムを停止させたいケースがあると思います。その実現方法をご紹介しますね。
PyAutoGUIで作成した自動化処理で以上が発生した場合、moveTo関数とFAILSAFEを組み合わせることで、安全に実行中の自動化処理を緊急停止できます。
★使い方★
・書き方
pyautogui.FAILSAFE = True
PyAutoGUIの処理
if 前の処理が失敗した:
moveTo(0,0)
PyAutoGUIの処理
・例
pyautogui.FAILSAFE = True
ret = pyautogui.locateOnScreen(‘sample.jpg’)
if ret == False:
pyautogui.moveTo(0,0)
・実行結果
sample.jpgが画面上に存在しない場合、マウスを左上に移動させ、
FAILSAFE機能により処理を緊急停止させます。
ちなみに、moveTo関数の使い方を知りたい方には、以下の記事がオススメです。
>> 【最短5分】PyAutoGUIで多用するマウス操作の自動化7選
以降で、上記例に記載したプログラムを作成し実行する方法をご紹介します。
FAILSAFEで自動操作を停止させるプログラムの作成と実行
「FAILSAFEで自動操作を停止させるプログラムの作成と実行」に関して解説します。
FAILSAFEを使って緊急停止機能を使ってみましょう。
以下のプログラムを作成し、「pyautogui-failsafe-moveto.py」というファイル名で保存してください。
import time
import pyautogui
pyautogui.FAILSAFE = True
ret = pyautogui.locateOnScreen('sample.jpg', confidence=1.0)
if ret is None:
pyautogui.moveTo(0,0)
for pause_num in range(30):
pyautogui.moveTo(500, 100)
time.sleep(1)
print(pause_num)
print('normal end')
ちなみに、locateOnScreenの使い方を知りたい方には、以下の記事がオススメです。
>> 【最短5分】PyAutoGUIのlocateOnScreenで画像クリック
続いて、コマンドプロンプトを起動し、作成したプログラムを以下のコマンドで実行してみましょう。
python pyautogui-failsafe-moveto.py
コマンド実行後、下の動画のように「FailSafeExceptionが表示」できた場合、「正常に作成したプログラムを実行できた」と判断できます。
PyAutoGUIのFAILSAFEを使うことで、安心安全に自動処理中に緊急停止できます。
ちなみに、「PyAutoGUIでExcelやWordの操作を自動化する方法は?」や「Pythonを基礎から体系的に学ぶ方法は?」などを知りたい方には、以下の記事で紹介している本や教材がオススメです。
>> PyAutoGUIの入門に役に立つオススメ本や教材6選
【まとめ】PyAutoGUIの自動処理を途中で停止させる【FAILSAFEとは?】
いかがでしたでしょうか?
上記で紹介した「FAILSAFE」を理解していただくと、PyAutoGUIで自動化した処理を安全に緊急停止できるようになります。
最後にもう一度内容を確認しましょう。
★PyAutoGUIの自動処理中に緊急停止させる方法★
・FAILSAFE機能を利用する
・マウスを四隅のどこかに移動させることで停止できる
・FAILSAFE機能を使うかどうかは、自動化したい処理の内容で決める
さらに体系的にPyAutoGUIを学習したい方は、以下の記事で紹介している教材がオススメです。
>> PyAutoGUIの入門に役に立つオススメ本や教材6選
コメント