fc2ブログ
MacでクリップボードをPythonから操作する
Pythonで書いたプログラムの中から、クリップボードを操作できると便利だなと思い、調べてみるとMacにはコマンドラインのプログラムでクリップボードを操作できるものがあるということが判明。この小さな機能を組み合わせて仕事を達成するというUnix的発想がいまも継承されているところが、Macが死なずに生き残っている理由ですかね。(まあ、そうなったのは最近だという話もありますが・・・)
まあとにかく、Pythonからこれらのコマンドを、標準入出力を介して呼び出す関数を書けばOK。ちなみに、Macではクリップボードではなく、ペーストボード(paste bord)と呼ぶようです。


import subprocess

def getpb_data():
p = subprocess.Popen(['pbpaste'], stdout=subprocess.PIPE)
return p.communicate()[0]

def setpb_data(data):
p = subprocess.Popen(['pbcopy'], stdin=subprocess.PIPE)
p.communicate(data)


コマンドラインのプログラムをサブプロセスで呼び出しているだけなので、データのやり取りは文字列で行われます。画像などのバイナリデータをコピーしてもデータは取得できません。
また、改行はなぜか昔のMacのようにCR(\r)が使われますので注意が必要です。
これを使えば、Excelの列をコピーして、Pythonのプログラムの中でリストに変更なってことができるわけです。
なんか、ちょっとハックな気分ですね。(たいしたことやってませんが・・・)

スポンサーサイト



テーマ:プログラミング - ジャンル:コンピュータ

【2010/12/11 19:32】 | Python | トラックバック(0) | コメント(0) | page top↑
<<食える数学 | ホーム | 広告?>>
コメント
コメントの投稿














管理者にだけ表示を許可する

トラックバック
トラックバックURL
→http://tanopy.blog79.fc2.com/tb.php/66-2461ed28
この記事にトラックバックする(FC2ブログユーザー)
| ホーム |