Pythonでのクリップボード監視と自動整形

 EZR (Easy R) の多変量解析の結果を Excel にちまちまコピー&ペーストしていて嫌になったのでなんとかしたい。

 こういうのを自動的に下のようにしたい。

……ん? Pyperclip が not implemented と例外を投げている。

これはどうもWSL2上での Pandas の bug っぽく、原因は以下のコードのようである。

Ubuntu on WSL2 の /proc/version は以下の通り。

 ’Microsoft’, ‘microsoft’ の case 違いでマッチせず init_wsl_clipboard() が返されないことが原因っぽいな。まあ自分で書き換えるかパッチを待つかしてもよいのだが、そもそも単純な作業であるから、pyperclip 本体を叩いた方が早いだろう。それに Pandas だと thread を作って polling させクリップボードの変更を監視させる必要があるが、pyperclip なら waitForNewPaste() を使えば一行で済む。

pyperclip.waitForNewPaste()
 タイムアウトの秒数を引数に取り、クリップボードに新しい内容がコピーされるまで待機する。タイムアウトすると pyperclip.PyperclipTimeoutException を throw する。Windows の場合、フォーマットが CF_TEXT 以外(ビットマップデータやファイル)だと空文字列を返す。コピーしても前回と同じクリップボード内容になる場合は return しない。

 というわけでさっくりと。

 クリップボードが10分間変更されなかったり、CTRL-Cで割りこむと終了する。なお upper CI が ‘Inf’ の時も float() がエラーを吐かないなぁと思ったら、float(‘Inf’) は inf を返すようだ。

送信中です

×

※コメントは最大500文字、5回まで送信できます

送信中です送信しました!
  • URLをコピーしました!
目次