この記事では、Pythonのsys
、pyperclip
、shelve
モジュールを使い、複数のテキスト断片をキーワードに紐付けて保存・読み込みができる、コマンドラインベースの多機能クリップボード(マルチクリップボード)ツールを作成する方法を解説します。
1. 必要なモジュールとプログラムの仕様
このツールは3つの主要なモジュールを利用します。
sys
: コマンドラインから渡される引数を読み取るために使用します。pyperclip
: システムのクリップボードへのコピー&ペーストを行います。(pip install pyperclip
で要インストール)shelve
: キーワードとテキストのペアをファイルに永続的に保存するために使用します。
作成するプログラムmcb.py
の仕様は以下の通りです。
python mcb.py save <キーワード>
: 現在クリップボードにある内容を、指定したキーワードで保存します。python mcb.py <キーワード>
: 指定したキーワードに保存されている内容をクリップボードに読み込みます。python mcb.py list
: 保存されているすべてのキーワードの一覧をクリップボードにコピーします。
2. 完成したコード全体
以下に、上記の仕様を実装した完全なスクリプトを示します。この内容をmcb.py
という名前で保存してください。
#! /usr/bin/env python3
# mcb.py - 多機能クリップボードツール
import shelve
import pyperclip
import sys
# シェルフファイルを開く(なければ新規作成)
# with文で自動的にクローズ処理を行う
with shelve.open('mcb_data') as clipboard_db:
# --- 'save'コマンドの処理 ---
if len(sys.argv) == 3 and sys.argv[1].lower() == 'save':
# sys.argv[0]はスクリプト名, [1]は'save', [2]はキーワード
keyword = sys.argv[2]
clipboard_content = pyperclip.paste()
clipboard_db[keyword] = clipboard_content
print(f"クリップボードの内容をキーワード「{keyword}」で保存しました。")
# --- 'list'または'load'コマンドの処理 ---
elif len(sys.argv) == 2:
# --- 'list'コマンド ---
if sys.argv[1].lower() == 'list':
keywords = list(clipboard_db.keys())
keywords_text = '\n'.join(keywords)
pyperclip.copy(keywords_text)
print("すべてのキーワードをクリップボードにコピーしました。")
if not keywords:
print("(保存されているキーワードはありません)")
# --- 'load'コマンド ---
elif sys.argv[1] in clipboard_db:
keyword_to_load = sys.argv[1]
content = clipboard_db[keyword_to_load]
pyperclip.copy(content)
print(f"キーワード「{keyword_to_load}」の内容をクリップボードにコピーしました。")
else:
print(f"キーワード「{sys.argv[1]}」は見つかりませんでした。")
else:
print("使い方:")
print("python mcb.py save <キーワード> - クリップボードをキーワードで保存")
print("python mcb.py <キーワード> - キーワードの内容をクリップボードに読み込み")
print("python mcb.py list - 全キーワードを一覧表示")
3. スクリプトの実行方法
このスクリプトはターミナルやコマンドプロンプトから使用します。
データを保存する
- まず、保存したいテキスト(例:
よく使うメールアドレス a@example.com
)をクリップボードにコピーします。 - ターミナルで以下のコマンドを実行します。
python mcb.py save email_a
クリップボードの内容をキーワード「email_a」で保存しました。
と表示されます。
データを読み込む 保存したデータをクリップボードに呼び出すには、キーワードを指定して実行します。
python mcb.py email_a
キーワード「email_a」の内容をクリップボードにコピーしました。
と表示され、クリップボードの中身がよく使うメールアドレス a@example.com
になります。
キーワード一覧を表示する 保存したキーワードの一覧を確認するには、list
コマンドを使います。
python mcb.py list
すべてのキーワードをクリップボードにコピーしました。
と表示され、クリップボードにemail_a
などのキーワード一覧がコピーされます。
まとめ
このツールは、Pythonの標準ライブラリとサードパーティ製ライブラリを組み合わせることで、日常作業を効率化する実用的なコマンドラインアプリケーションを作成できることを示しています。コマンドライン引数の処理、ファイルへの永続的なデータ保存、OSのクリップボード連携といった、応用の効く多くの要素が含まれています。