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が使える状態になっていることを前提とします。
pip install pyperclip
プロジェクトごとに環境を分けたい場合は、仮想環境(venvやpoetryなど)を作った上で同じコマンドを実行します。

インポートと動作確認
インストール後、まずは最小限のスクリプトで動作確認をしてみます。
import pyperclip
# 文字列をクリップボードにコピー
pyperclip.copy("こんにちは、pyperclip!")
# クリップボードから文字列を取得
text = pyperclip.paste()
print(text) # コピーした内容が表示されるはずです
こんにちは、pyperclip!
このように、わずか数行のコードでクリップボードのコピー・ペーストが試せます。
基本のAPI: copyとpasteを理解する
pyperclip.copy()でクリップボードにコピー
pyperclip.copy()は、引数に与えた文字列をそのままクリップボードへ送ります。
import pyperclip
message = "この文章がクリップボードにコピーされます。"
pyperclip.copy(message) # ここでクリップボードにコピーされる
print("クリップボードへコピーしました。")
実行すると、次のようなメッセージが表示されます。
クリップボードへコピーしました。
この状態で任意のアプリ(メモ帳、ブラウザなど)に移動して貼り付けると、スクリプトで指定した文字列がそのまま貼り付けられます。
pyperclip.paste()でクリップボードから取得
pyperclip.paste()は、現在クリップボードに入っているテキストを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側にクリップボード操作用のツールをインストールする必要があります。
代表的な対処方法は以下の通りです。
# 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本で実現できます。

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形式のリストを作るなどの処理が簡単に書けます。
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: 定型文・テンプレート自動コピペ
よく使う文章をワンコマンドでコピー
ビジネスメールやチャットで、毎回同じ挨拶文や署名を打つのは非効率です。
そこで、定型文をスクリプト内に用意しておき、実行するだけでクリップボードにコピーされるようにすると便利です。
import pyperclip
# よく使う定型文を定義
template = """\
お世話になっております。
株式会社サンプルの山田です。
ご連絡ありがとうございます。
以下の内容について確認いたしました。
"""
pyperclip.copy(template)
print("定型文をクリップボードへコピーしました。貼り付けてご利用ください。")
定型文をクリップボードへコピーしました。貼り付けてご利用ください。
このスクリプトをショートカットやバッチファイル経由で呼び出せば、数秒でメールの書き出しが完了します。
コマンドライン引数でテンプレートを選択する
テンプレートを複数使い分けたい場合は、コマンドライン引数と組み合わせることで、呼び出すテンプレートを切り替えることも可能です。
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()
python template_clip.py greeting
テンプレート「greeting」をクリップボードへコピーしました。
このように、pyperclipは小さな「自分専用ツール」を作るのに非常に向いています。
応用: クリップボード監視と自動変換
クリップボードの変化を監視する基本パターン
もう一歩進めて、クリップボードの内容が変わるたびに自動で何か処理をする簡易ツールも作れます。
たとえば、コピーしたテキストを自動で大文字に変換するデモを考えてみます。

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.clipboard | GUIアプリ内のクリップボード | 標準ライブラリ・追加インストール不要 | Tkウィンドウが必要・CLI向きではない |
| OS固有API(pywin32等) | 画像やリッチテキストの操作 | 高度な操作が可能 | OS依存・実装が複雑になりがち |
テキストだけをサクッと扱いたい場合はpyperclipが最適であり、画像やリッチテキストも含めて制御したい場合はOS固有APIを検討する、という使い分けが現実的です。
まとめ
pyperclipは、Pythonでクリップボードを手軽に扱うための最有力ライブラリです。
インストールはpip install pyperclipだけで済み、copy()とpaste()という2つの関数を覚えれば、クリップボードの読み書きをすぐに始められます。
テキスト整形ツールや定型文の自動コピペ、クリップボード監視による自動変換など、日常業務の細かなストレスを減らす小さなスクリプトを簡単に作成できる点も大きな魅力です。
まずは、自分の作業の中で「コピペが多い部分」を1つ選び、pyperclipで自動化してみることをおすすめします。
