閉じる

【Python】pyperclip入門:クリップボード操作・自動コピペを一気に習得

Pythonで日常的な作業を自動化しようとすると、必ずと言ってよいほど出てくるのが「コピペの自動化」です。

本記事では、Pythonの人気ライブラリであるpyperclipを使って、クリップボードの読み書きや自動コピペを基礎から丁寧に解説します。

インストール方法から、実務に使えるサンプルコードまでまとめて学べます。

Pythonでクリップボードを扱うメリット

クリップボード操作を自動化する意義

クリップボードの自動操作は、単純な反復作業の時間を確実に削減できます。

特に、WebページやExcel、テキストファイルから情報をコピーして整形し、別の場所へ貼り付けるといった作業は、Pythonとpyperclipを組み合わせることで大幅に効率化できます。

たとえば、次のようなケースで役立ちます。

  • Webブラウザでコピーした文字列を、自動で整形して別のアプリに貼り付けたい
  • クリップボードへコピーしたメールアドレスを自動でマスク処理したい
  • 定型文を一発でクリップボードへコピーして、すぐに貼り付けられるようにしたい

このような用途で、OSの種類に関係なく同じコードで動かせるのがpyperclipの大きな利点です。

pyperclipとは何か

pyperclipは、Pythonでクリップボードにアクセスするための非常にシンプルなライブラリです。

Windows、macOS、Linuxの主要OSで動き、テキストベースのコピーとペーストを簡単な関数1つずつで扱えます。

主な特徴としては次のような点があります。

  • 関数はcopy()paste()の2つが中心で覚えやすい
  • OSごとに異なるクリップボードAPIを意識せずに済む
  • 軽量でインストールが簡単
  • 他の自動化ツール(例: Selenium、pyautogui)と組み合わせやすい

「迷ったらとりあえずpyperclip」と言えるほど、クリップボード用途では定番のライブラリです。

pyperclipのインストールと基本設定

インストール方法(pip)

pyperclipは、通常のpipコマンドでインストールできます。

事前にPythonとpipが使える状態になっていることを前提とします。

Shell
pip install pyperclip

プロジェクトごとに環境を分けたい場合は、仮想環境(venvやpoetryなど)を作った上で同じコマンドを実行します。

インポートと動作確認

インストール後、まずは最小限のスクリプトで動作確認をしてみます。

Python
import pyperclip

# 文字列をクリップボードにコピー
pyperclip.copy("こんにちは、pyperclip!")

# クリップボードから文字列を取得
text = pyperclip.paste()

print(text)  # コピーした内容が表示されるはずです
実行結果
こんにちは、pyperclip!

このように、わずか数行のコードでクリップボードのコピー・ペーストが試せます。

基本のAPI: copyとpasteを理解する

pyperclip.copy()でクリップボードにコピー

pyperclip.copy()は、引数に与えた文字列をそのままクリップボードへ送ります。

Python
import pyperclip

message = "この文章がクリップボードにコピーされます。"
pyperclip.copy(message)  # ここでクリップボードにコピーされる

print("クリップボードへコピーしました。")

実行すると、次のようなメッセージが表示されます。

クリップボードへコピーしました。

この状態で任意のアプリ(メモ帳、ブラウザなど)に移動して貼り付けると、スクリプトで指定した文字列がそのまま貼り付けられます。

pyperclip.paste()でクリップボードから取得

pyperclip.paste()は、現在クリップボードに入っているテキストをPythonの文字列として返します。

Python
import pyperclip

# 事前に適当なテキストをコピーしておく(手動でもOK)
text = pyperclip.paste()

print("クリップボードの内容:")
print(text)
実行結果
クリップボードの内容:
https://example.com/very/long/url

GUIアプリでコピーした内容を、そのままPythonスクリプトに取り込めるため、後述する文字列整形や一括変換処理と非常に相性が良いです。

よくあるトラブルとOS別の注意点

Linuxでの追加インストール(xclipなど)

Linux環境では、pyperclipが内部で使うコマンドがインストールされていないことがあります。

その場合、次のようなエラーが出ることがあります。

PyperclipException: 
  Pyperclip requires the 'xclip' or 'xsel' application,
  or the 'klipper' clipboard manager, or the 'qtpy' or 'PyQt5' module.

この場合、Linux側にクリップボード操作用のツールをインストールする必要があります。

代表的な対処方法は以下の通りです。

Shell
# Debian/Ubuntu系
sudo apt-get install xclip

# または
sudo apt-get install xsel

インストール後に、再度Pythonスクリプトを実行すると正常に動作するようになります。

文字化けやエンコーディングの注意

通常、pyperclipはUnicode文字列を扱えるように設計されていますが、まれに次のようなケースで文字化けのように見えることがあります。

  • ターミナル側の文字コード設定がUTF-8以外
  • 出力先のアプリが特定の文字種(絵文字など)を正しく表示できない

このような場合、pyperclipそのものではなく、表示側の環境を確認することが重要です。

Python内では、基本的にstr型(Unicode)として扱われていると考えて問題ありません。

実用例1: テキスト整形ツールとして使う

前後の空白・改行を自動で削除する

Webからコピーしたテキストには、不要な空白や改行が混ざっていることがあります。

pyperclipを使うと、「コピー → 自動整形 → 整形済みを再コピー」という流れをスクリプト1本で実現できます。

Python
import pyperclip

# クリップボードから取得
raw_text = pyperclip.paste()

# 前後の空白・改行を削除し、連続した改行を1つにまとめる例
cleaned = raw_text.strip()  # 前後の空白と改行を削除

# ここでは単純な例として、連続する2つの改行を1つに置き換えます
while "\n\n" in cleaned:
    cleaned = cleaned.replace("\n\n", "\n")

# 整形したテキストをクリップボードへ戻す
pyperclip.copy(cleaned)

print("テキストを整形してクリップボードへコピーしました。")
実行結果
テキストを整形してクリップボードへコピーしました。

この状態で貼り付けると、不要な空白や余計な改行が取り除かれたテキストになります。

URLの一覧を1行ずつ整形する

複数行に並んだURLをPythonで少し加工してから使いたい場合にも、pyperclipは便利です。

たとえば、各行の前に- を付けてMarkdown形式のリストを作るなどの処理が簡単に書けます。

Python
import pyperclip

raw = pyperclip.paste()

lines = raw.splitlines()

# 空行は無視して、先頭に "- " を付ける
processed_lines = []
for line in lines:
    line = line.strip()
    if not line:
        continue
    processed_lines.append(f"- {line}")

result = "\n".join(processed_lines)

pyperclip.copy(result)

print("URL一覧をMarkdown形式のリストに変換しました。")
実行結果
URL一覧をMarkdown形式のリストに変換しました。

このスクリプトを使うと、コピーしたURL集合をそのまま整形して貼り付けできるようになります。

実用例2: 定型文・テンプレート自動コピペ

よく使う文章をワンコマンドでコピー

ビジネスメールやチャットで、毎回同じ挨拶文や署名を打つのは非効率です。

そこで、定型文をスクリプト内に用意しておき、実行するだけでクリップボードにコピーされるようにすると便利です。

Python
import pyperclip

# よく使う定型文を定義
template = """\
お世話になっております。
株式会社サンプルの山田です。

ご連絡ありがとうございます。
以下の内容について確認いたしました。

"""

pyperclip.copy(template)

print("定型文をクリップボードへコピーしました。貼り付けてご利用ください。")
実行結果
定型文をクリップボードへコピーしました。貼り付けてご利用ください。

このスクリプトをショートカットやバッチファイル経由で呼び出せば、数秒でメールの書き出しが完了します。

コマンドライン引数でテンプレートを選択する

テンプレートを複数使い分けたい場合は、コマンドライン引数と組み合わせることで、呼び出すテンプレートを切り替えることも可能です。

Python
import sys
import pyperclip

# 簡易的なテンプレート辞書
templates = {
    "greeting": "お世話になっております。\n株式会社サンプルの山田です。\n",
    "thanks": "ご連絡ありがとうございます。\n確認のうえ、折り返しご連絡いたします。\n",
    "closing": "引き続きよろしくお願いいたします。\n"
}

def main():
    if len(sys.argv) < 2:
        print("テンプレート名を指定してください。(greeting/thanks/closing)")
        return

    key = sys.argv[1]

    if key not in templates:
        print(f"不明なテンプレート名です: {key}")
        return

    pyperclip.copy(templates[key])
    print(f"テンプレート「{key}」をクリップボードへコピーしました。")

if __name__ == "__main__":
    main()
Shell
python template_clip.py greeting
実行結果
テンプレート「greeting」をクリップボードへコピーしました。

このように、pyperclipは小さな「自分専用ツール」を作るのに非常に向いています。

応用: クリップボード監視と自動変換

クリップボードの変化を監視する基本パターン

もう一歩進めて、クリップボードの内容が変わるたびに自動で何か処理をする簡易ツールも作れます。

たとえば、コピーしたテキストを自動で大文字に変換するデモを考えてみます。

Python
import time
import pyperclip

def auto_uppercase_loop(interval=0.5):
    """クリップボードを監視し、テキストが変化したら大文字にして戻すデモ"""
    last_text = None
    print("クリップボード監視を開始します。Ctrl+Cで終了できます。")

    while True:
        try:
            current = pyperclip.paste()
        except pyperclip.PyperclipException:
            # 何らかの理由で取得できない場合はスキップ
            time.sleep(interval)
            continue

        if current and current != last_text:
            # 新しくコピーされたテキストがある
            upper = current.upper()
            pyperclip.copy(upper)
            print("新しいテキストを検出し、大文字に変換しました:")
            print(upper)
            last_text = upper

        time.sleep(interval)

if __name__ == "__main__":
    auto_uppercase_loop()

実行例(コピー操作を行いながら):

クリップボード監視を開始します。Ctrl+Cで終了できます。
新しいテキストを検出し、大文字に変換しました:
HELLO WORLD
新しいテキストを検出し、大文字に変換しました:
PYTHON PYPERCLIP

このような仕組みを応用すると、次のような自動変換ツールを作ることができます。

  • コピーされたURLに追跡パラメータを自動付与
  • コピーされたコードを自動整形(インデント修正など)
  • コピーされたテキストの中からメールアドレスだけ抽出して再コピー

自動処理ツールを作る際の注意点

クリップボード監視系のツールを実用レベルで使う場合は、次の点に注意すると安全です。

  • 監視間隔intervalを短くしすぎるとCPU使用率が上がる
  • セキュリティ的に機密情報(パスワードなど)がコピーされる可能性を考慮する
  • 意図しない変換を避けるため、対象となる文字列の条件(例: URLだけ)を明確にする

クリップボードには機密情報も頻繁に載るため、必要以上に保存したりログ出力したりしないよう配慮することが大切です。

代表的な他ライブラリとの比較

クリップボードを扱うPythonライブラリはpyperclipだけではありません。

用途に応じて、他の選択肢と使い分けることもあります。

下記の表は、代表的な手段を比較したものです。

手段主な用途利点注意点
pyperclipテキストのコピー・ペーストシンプル・OS非依存・導入が簡単テキスト専用(画像などは扱えない)
tkinter.clipboardGUIアプリ内のクリップボード標準ライブラリ・追加インストール不要Tkウィンドウが必要・CLI向きではない
OS固有API(pywin32等)画像やリッチテキストの操作高度な操作が可能OS依存・実装が複雑になりがち

テキストだけをサクッと扱いたい場合はpyperclipが最適であり、画像やリッチテキストも含めて制御したい場合はOS固有APIを検討する、という使い分けが現実的です。

まとめ

pyperclipは、Pythonでクリップボードを手軽に扱うための最有力ライブラリです。

インストールはpip install pyperclipだけで済み、copy()paste()という2つの関数を覚えれば、クリップボードの読み書きをすぐに始められます。

テキスト整形ツールや定型文の自動コピペ、クリップボード監視による自動変換など、日常業務の細かなストレスを減らす小さなスクリプトを簡単に作成できる点も大きな魅力です。

まずは、自分の作業の中で「コピペが多い部分」を1つ選び、pyperclipで自動化してみることをおすすめします。

業務自動化

クラウドSSLサイトシールは安心の証です。

URLをコピーしました!