Pythonでコマンドライン多機能クリップボードツールを作成する

この記事では、Pythonのsyspyperclipshelveモジュールを使い、複数のテキスト断片をキーワードに紐付けて保存・読み込みができる、コマンドラインベースの多機能クリップボード(マルチクリップボード)ツールを作成する方法を解説します。


目次

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. スクリプトの実行方法

このスクリプトはターミナルやコマンドプロンプトから使用します。

データを保存する

  1. まず、保存したいテキスト(例: よく使うメールアドレス a@example.com)をクリップボードにコピーします。
  2. ターミナルで以下のコマンドを実行します。
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のクリップボード連携といった、応用の効く多くの要素が含まれています。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次