【Python】クリップボードを操作(テキストのコピー、貼り付け)する方法:pyperclip

時計 2023.01.30 / 時計

【Python】クリップボードを操作(テキストのコピー、貼り付け)する方法:pyperclip

記事ではPythonにおける、クリップボードを操作(テキストのコピー、貼り付け)する方法について解説していきます。

Pythonでクリップボードへのコピーや貼り付けをするにはpyperclipモジュールを使用します。Windows用のアプリケーションを作成する際に、クリップボードを操作することは多いかと思います。

私の場合

PDFの一部をOCRし、読み込んだ文字列をクリップボードにコピーしたり、生成された文字列(パスワードなど)をクリップボードにコピーするといったアプリケーションに利用しています

本記事を通して、クリップボードを操作するためのpyperclipモジュールのメソッドについて理解を深めてください。

クリップボードとは

クリップボードとはコピーしたデータ(テキストや画像など)を一時的に保存している領域です。

クリップボードで利用できる機能として、「コピー」と「貼り付け」があります。これらによりわざわざ文字列を手入力しなくても、簡単に文字列の複製を作ることができます。

クリップボードは一時的な保存領域のため電源を切れば消えてしまいます。

pyperclipモジュール

pyperclipモジュールとは

pyperclipモジュールはパソコンのクリップボードとテキストのやり取りを行えるモジュールです。つまりクリップボードに文字列をコピーしたり、クリップボードの文字列を取得することができるということです。

Pythonでクリップボードが操作できることによって、メールやWord、Excelなどのドキュメントに貼り付けることが簡単にできます。

本記事では現時点(2022年1月)で最新のバージョン1.8.2を使用しています。

pyperclipのインストール

pyperclipはPythonには標準で備わっていません。そのため次のようにpipコマンドでインストールしてください。

pip install pyperclip

pyperclipの使い方

pyperclipのインポート

pyperclipモジュールを使用するには、まずpyperclipをインポートする必要があります。

>>> import pyperclip

クリップボードへのコピー:copy()

クリップボードに文字列をコピーするにはpyperclip.copy()メソッドを使用します。

構文

pyperclip.copy(クリップボードにコピーしたい文字列)

copy()メソッドを使用することで、一つずつクリップボードに文字列をコピーできます。

>>> import pyperclip
>>> pyperclip.copy('Hello world')

クリップボードの文字列を貼り付け(取得):paste()

クリップボードの文字列を貼り付ける(取得)にはpyperclip.paste()メソッドを使用します。

構文

pyperclip.paste()

>>> import pyperclip
>>> pyperclip.copy('Hello world')
>>> pyperclip.paste()
'Hello world'

ここで注意が必要なのがpaste()メソッドの返り値は、クリップボードにコピーされた最新の文字列です。Windowsの「クリップボードの履歴」機能のように過去にコピーされた文字列は取得できません。Windowsの「クリップボードの履歴」機能については以下記事をご参照ください。

またpaste()メソッドで返されるのはすべて文字列str型です。copy()メソッドで整数int型をコピーしたとしても、paste()メソッドで返されるのは文字列str型です。

>>> import pyperclip
>>> pyperclip.copy(54)
>>> type(pyperclip.paste())
str

paste()メソッドで整数int型を返すようにするにはint()またはfloat()を使用しましょう。

>>> import pyperclip
>>> pyperclip.copy(54)
>>> type(int(pyperclip.paste()))
int

クリップボードへのコピーを監視:waitForNewPaste()

クリップボードへのコピーを監視するにはpyperclip.waitForNewPaste()メソッドを使用します。waitForNewPaste()メソッドを実行するとプログラムは待機状態となり、新しい文字列がコピーされるとコピーされた文字列が返されます。

構文

pyperclip.waitForNewPaste(待機時間)

waitForNewPaste()メソッドの引数に待機時間(秒数)を指定できます。待機時間を過ぎた場合、次のように例外が発生します。

>>> pyperclip.waitForNewPaste(2)
PyperclipTimeoutException: waitForNewPaste() timed out after 2 seconds.

waitForNewPaste()で待機時間を設定する場合は、例外が発生することも考慮して例外処理を行うようにしましょう。

import pyperclip

try:
    pyperclip.waitForNewPaste(2)
except Exception as e:
    print(e)

まとめ

本記事「【Python】クリップボードを操作(テキストのコピー、貼り付け)する方法:pyperclip」はいかがでしたか。

本記事で紹介した内容を以下にまとめます。

  • Pythonでクリップボードを操作するにはpyperclipモジュールを使う
  • クリップボードへのコピーはcopy()メソッド
  • クリップボードの文字列を取得するにはpaste()メソッド
  • クリップボードへのコピーを監視するにはwaitForNewPaste()メソッド

ぜひpyperclipモジュールを使用してWindows用のアプリケーションを作ってみてください。