クリップボードを操作したい
クリップボード(英: clipboard)は、コンピュータ上で、一時的にデータを保存できる共有のメモリ領域のことである。
(Wikipediaより)
Pythonでクリップボードを操作したいときなんてあるの?と思われるかもしれません。
例えばこんな状況を考えてみてください。
Pythonで処理したdataframe(表テーブル)をExcelに貼り付けたい。
このExcelファイルが自分のパソコンの中にあるのなら、Pythonでそのファイルに直接書き込めばいいわけですが、そのファイルは社内のサーバー上にあってPythonから直接アクセスすることが難しい…。
こんな状況ならば、dataframeを一旦、クリップボードにコピーしておいて、手動で該当のExcelファイルを開いて貼り付ければ便利ですよね。
pyperclipでクリップボードを操作
クリップボードにコピーしたり、クリップボードから貼り付けるにはpyperclipというモジュールを使います。
このpyperclipはとてもシンプルで、pyperclip.copy()
とpyperclip.paste()
がほぼすべてです。
操作 | 関数 |
---|---|
クリップボードへコピー | pyperclip.copy() |
クリップボードから貼り付け | pyperclip.paste() |
Excelに表形式で貼り付けるためのクリップボードの作り方
例えばExcelの中の表をコピーして、Excelの中の別の場所に貼り付けるとちゃんと表になっています。
当たり前かもしれませんが、少し不思議な気がしませんか?
クリップボードではこの「表形式」をどのように保持しているのでしょうか?
確認してみましょう。
下のようなExcelの表があります。
この表のA1~E6までをCrtl+Cでクリップボードにコピーします。
そして、次はPythonで次のように実行してクリップボードの中身を確認してみます。
import pyperclip
pyperclip.paste()
'大井竹雄\tオオイタケオ\t男\t1960/8/30\t千葉県\r\n長井恵子\tナガイケイコ\t女\t1999/5/21\t高知県\r\n茂木美香\tモギミカ\t女\t1989/3/27\t埼玉県\r\n那須貴子\tナスタカコ\t女\t1981/9/29\t広島県\r\n杉浦昭一\tスギウラショウイチ\t男\t1991/10/31\t兵庫県\r\n'
隣の列とは**タブ(\t)で、隣の行とは改行コード(\r\n)**で区切られているのがわかりますね。
つまり、このようにタブ(\t)と改行コード(\r\n)で区切った文字列を作ってpyperclip.copy()
でクリップボードにコピーしてあげれば、あとはCtrl+VでExcelに表形式で貼り付けることができるというわけです。
やってみましょう。
下のように実行して貼り付けたい文字列をクリップボードにコピーしておきます。
pyperclip.copy("佐々木茂\tササキシゲル\t男\t1964/2/13\t和歌山県\r\n三田かなえ\tミタカナエ\t女\t1979/10/1\t秋田県\r\n")
ちゃんと表として貼り付けることができましたね!