【Python】スクリーンショットを自動で撮ってファイル保存する方法(GUI操作自動化)

【Python】スクリーンショットを自動で撮ってファイル保存する方法(GUI操作自動化) Python

Pythonを使えば、デスクトップ画面のスクリーンショットを自動で撮影して、指定フォルダに保存することが簡単に実現できます。今回は、GUI操作の自動化にも対応できる「pyautogui」ライブラリを活用したスクリーンショット撮影の基本的な方法をご紹介します。

pyautoguiとは?

pyautoguiは、マウス操作やキーボード入力をPythonから自動で行えるライブラリです。さらに、画面のスクリーンショット撮影や、画面上の画像マッチングなども可能なため、GUI操作の自動化に広く活用されています。

pyautoguiのインストール方法

まずはライブラリをインストールします。以下のコマンドを実行してください。

pip install pyautogui

インストール後、スクリーンショットを撮るための準備は完了です。

スクリーンショットを撮ってファイル保存する基本コード

以下は、デスクトップ全体のスクリーンショットを撮影し、PNG形式でファイル保存するコードです。

import pyautogui
import datetime
import os

# スクリーンショット保存用ディレクトリ
save_dir = 'screenshots'
os.makedirs(save_dir, exist_ok=True)

# 現在時刻を使ってファイル名を生成
timestamp = datetime.datetime.now().strftime('%Y%m%d_%H%M%S')
filename = f'screenshot_{timestamp}.png'
filepath = os.path.join(save_dir, filename)

# スクリーンショットを撮影して保存
screenshot = pyautogui.screenshot()
screenshot.save(filepath)

print(f'スクリーンショットを保存しました: {filepath}')

このコードを実行すると、「screenshots」フォルダ内に現在時刻付きのPNGファイルが保存されます。

一定間隔で定期的にスクリーンショットを撮影する

一定間隔ごとに自動でスクリーンショットを撮るには、time.sleep() を組み合わせます。

import pyautogui
import datetime
import os
import time

save_dir = 'screenshots'
os.makedirs(save_dir, exist_ok=True)

# 5回、10秒間隔で撮影
for i in range(5):
    timestamp = datetime.datetime.now().strftime('%Y%m%d_%H%M%S')
    filename = f'screenshot_{timestamp}.png'
    filepath = os.path.join(save_dir, filename)

    screenshot = pyautogui.screenshot()
    screenshot.save(filepath)

    print(f'保存完了: {filepath}')
    time.sleep(10)

このようにすれば、特定の操作の監視や画面推移の記録にも利用できます。

注意点と補足情報

  • スクリーンショットの撮影対象は、マルチモニタ環境でも全画面が対象となります。
  • 必要に応じて、screenshot(region=(x, y, width, height)) を使えば、画面の一部だけを切り出すことも可能です。
  • Windows環境では、権限設定やセキュリティソフトの影響でうまく撮れない場合があるため、その際は管理者権限で実行してみてください。

まとめ

Pythonとpyautoguiを使えば、スクリーンショットの撮影と保存を自動化することが簡単にできます。GUI操作の記録や監視、操作ログとして活用することで、業務効率化にもつながります。自動化スクリプトの第一歩として、ぜひ活用してみてください。