俺言語。

自分にしか理解できない言語で書かれた備忘録

【Python】クリップボードからデータ取得

沢山の方法があってどれを使うといいのか迷ってしまう。
いくつか試したのでその結果のメモ。

1. win32clipboard(pywin32の一部と思う)

# ストリームを開く
win32clipboard.OpenClipboard()
# データ取得
win32clipboard.GetClipboardData()
# ストリームを閉じる
win32clipboard.CloseClipboard()

これは簡単
これだと例えばエクセルのセルを複数コピーした状態だと
すべてつながって1つのstrになる。
np.array()でndarryaに変換しようとするとMemoryErrorがでて使い物にならなかった。。


2.pandasのread_clipboard

これは大きなデータでも処理できた(1.でダメだった65534行のエクセルデータでもok)
これはデータフレーム型で読み込まれるので
as_matrixなどで変換が必要

clipdata = pd.read_clipboard()
outdata = clipdata.as_matrix()

こちらが非常に参考になった↓
jn1inl.blog77.fc2.com

【Python】matplotlibのフォントを変えた際にクリアする必要のあるキャッシュ

フォントのキャッシュを消去しないと新しいフォントが使えない。
キャッシュの場所は

import matplotlib
matplotlib.get_cachedir()

でわかる。

ここにある"fontList.cache"を消去すること。

フォントの変え方はこちらを参考に。
qiita.com

【Python】threadを使った時のプチはまり

threadのインスタンスを作成して別スレッドを作成する際の
プチはまり

# 関数hogeに引数numで与えて別スレッドで動かす例
self.th = threading.Thread(target = self.hoge, name="th", args=(num,))
self.th.start()

引数の"args=()"はタプルが必要なので
一つしかない場合は"num,"とすること。

【Python】プログラムでキーを自動的に押す(キーを送る)

あるアプリケーション上で自動的にキーを連打する必要が出たので
調べた時のメモ

# F5を押す
ctypes.windll.user32.keybd_event(116,0,0,0)
# F5を放す
ctypes.windll.user32.keybd_event(116,0,0,2)

キーコード(バーチャルキーコード)はこちらを参考にさせてもらった。
涼の頁 - 工房

【Windows】Windows APIの便利なリスト

ctypesが使える様になってAPIを調べる機会が増加。
よいサイトを見つけたのでメモ。

https://msdn.microsoft.com/ja-jp/windows/hh240557#10

使い方は

# user32.dllの場合,keybd_eventの場合
ctypes.windll.user32.keybd_event(**,0,0,0)

# kernel.dllの場合
ctypes.windll.kernel32.****