Python pyautoguiの安全機能:PAUSEとFAILSAFE

pyautoguiはマウスやキーボードを自動で操作できる強力なライブラリですが、スクリプトが意図しない動作をした場合に、ユーザーがコンピュータの制御を失うリスクも伴います。この記事では、そのような事態を防ぐための重要な安全機能であるpyautogui.PAUSEpyautogui.FAILSAFEについて解説します。


目次

pyautogui.PAUSE:各操作間の自動的な一時停止

pyautogui.PAUSE属性に秒数を設定すると、pyautoguiの各関数が実行されたに、指定した秒数だけプログラムが自動的に一時停止します。

これにより、スクリプトの実行速度が全体的に遅くなり、ユーザーが介入する時間的余裕が生まれます。また、GUIアプリケーションが自動操作に追いつくための待機時間を確保するのにも役立ちます。

import pyautogui

# pyautoguiの各関数の後に、1.5秒の一時停止を挿入する
pyautogui.PAUSE = 1.5

# 画面の(100, 200)に移動した後、1.5秒停止する
pyautogui.moveTo(100, 200)
# クリックした後、1.5秒停止する
pyautogui.click()
# テキストを入力した後、1.5秒停止する
pyautogui.write('Hello')

この設定は、スクリプトの冒頭で一度行うだけで、以降のすべてのpyautogui関数に適用されます。


pyautogui.FAILSAFE:緊急停止機能

pyautogui.FAILSAFE属性をTrueに設定すると、フェールセーフモードが有効になります。

このモードが有効な状態で、マウスカーソルを画面の左上隅(座標 0, 0)に素早く移動させると、pyautoguipyautogui.FailSafeExceptionという例外を発生させ、プログラムを即座に強制終了させます。

これは、マウスが暴走して制御不能に陥った場合に、プログラムを停止させるための非常に重要な「緊急停止スイッチ」です。pyautoguiを使ったスクリプトを開発する際は、安全のために常に有効にしておくことが強く推奨されます。

import pyautogui

# フェールセーフ機能を有効にする
pyautogui.FAILSAFE = True

# 10秒間、マウスを右に動かし続けるループ
# 途中でマウスを左上に移動させると、プログラムが停止する
try:
    for i in range(10):
        pyautogui.moveRel(100, 0, duration=1)
        print(f"移動 {i + 1}回目")
except pyautogui.FailSafeException:
    print("フェールセーフ機能によりプログラムが停止しました。")

まとめ

pyautoguiで安全なGUI自動化スクリプトを作成するためには、pyautogui.PAUSEpyautogui.FAILSAFEの2つの機能を理解し、適切に使用することが不可欠です。PAUSEはスクリプトの実行速度を制御して安定性を高め、FAILSAFEは万が一の際にプログラムを緊急停止させるための命綱となります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次