【Python】クリップボードを操作(テキストのコピー、貼り付け)する方法:pyperclip
2023.01.30 /
本記事では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の「クリップボードの履歴」機能については以下記事をご参照ください。
【Windows10】進化したクリップボード!コピー履歴を一覧表示して貼り付ける方法
また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】エラー発生時にプログラムを止めないで続ける方法:例外処理(try、except)
まとめ
本記事「【Python】クリップボードを操作(テキストのコピー、貼り付け)する方法:pyperclip」はいかがでしたか。
本記事で紹介した内容を以下にまとめます。
- Pythonでクリップボードを操作するにはpyperclipモジュールを使う
- クリップボードへのコピーはcopy()メソッド
- クリップボードの文字列を取得するにはpaste()メソッド
- クリップボードへのコピーを監視するにはwaitForNewPaste()メソッド
ぜひpyperclipモジュールを使用してWindows用のアプリケーションを作ってみてください。