俺言語。

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

Python

【Python】Pycharm + wx3 でエラー

PycharmのPython Console使用時に発生したエラー。おそらくbackednをpyqt4からwxに変更したことも関係あると思われる。C:\Program Files (x86)\JetBrains\PyCharm Community Edition 2017.1\helpers\pydev\pydev_ipython\inputhookwx.py def inputhook_wx3()…

【Python】Pycharmアップデート後にPythonクラッシュ多発

Pycharmはずっと2016.3バージョンを使っていたが知らぬ間に2017.1という新バージョンに。機能もデバッグの高速化とPandasの可視化と魅力的だったため アップデートしたところ,前は普通に動いていたプログラムが立て続けに Pythonのcrashで動かず。。その時…

【Python】リスト内包表記の戻り値はリスト

知らなかった。連続で処理したものをリストでもっておきたい時に便利。 たとえば グラフウィンドウ内にgridspecを使って大量にaxesを設定する場合 row = 4 line = 4 gs = gridspec.Gridspec(row, line) ax = [fig.addsubplot(gs[num]) for num in row * line…

【Python】wxFormBuilderがwxPython3に対応できていない部分

wxFormBuilderで作ったGUIはwxPython2までしか対応していないせいか wxPython3だとエラーでうまく動かいない場合があり。変更(修正)が必要な項目のまとめ。【バージョン】 wxformbuilder:3.5.1-RC1(Unicode) wxPython-Phoenix: 3.0.3dev2749+f803d20 【要変…

【Python】Pycharm設定覚書き

・行数の表示 - ON ・メソッド間の区切り線 - ON ・スペースの可視化 - ON ・補完は大文字小文字を区別するか - None(しない) ・スペルチェック - OFF(しない) これがONだと適当な変数名にいちいちアラートが出る。 ・dict型を記述する際の配置 - Align on c…

【Python】cx_Freezeでexeファイルを作成した時のエラー

Python2.7から3.5に移行して,py2exeが使えなくなってしまったので代わりにcx_Freezeを使った時のエラー エラー発生時のキーワードは KeyError: 'TCL_LIBRARY' (何故かエラー再現できなくなってしまった…。)解決方法はsetup.pyに下記を記載すること import …

【Python】pipでwhlファイルをインストールするときのエラー

Gohlkeさんのサイトからwhlファイルをダウンロードしてきて手動?でインストールしようとした際に発生したエラー。エラーメッセージは「***.whl is not a supported wheel on this platform.」最初はpythonのバージョンとライブラリのバージョンが違うために…

【Python】グラフの外にテキスト表示 or 対数グラフ内の右隅にテキスト表示

グラフの外にグラフ情報を表示したい場合,または対数グラフ上にテキストを表示したい場合の方法。対数グラフ内にテキストを表示する場合,axes.text()では位置合わせが難しい。そういう場合はfig内での座標でテキスト表示するのが有効。 テキストの位置はグ…

【Python】numpy2次元配列でキーを使ったソートの方法

エクセルの並び替えの様に優先するキー(軸)を指定した並び替えが少しめんどくさい。 なぜそれ用の関数orオプションがないのだろうか…。方法としては キーにする軸のみargsortでソート後のインデックスを取り出す そのインデックスを使ってソートする前の配列…

【Python】GetWindowTextで取得できない文字列を取得する方法(win32api SendMessage WM_GETTEXT)

GetWindowTextで文字列が取得できない場合(他プロセスのコントロール文字列は取得できないらしい、意味不明)は指定のハンドルにメッセージを投げて文字列を取得する。投げるメッセージの定数はwinuser32.h内に記載されている。ハンドルはspy++等で調べること…

【Python】ウィンドウのタイトル文字列を取得する方法(win32api user32 GetWindowText)

win32apiのGetWindowTextを使ってウィンドウの文字列を取得する方法 1.EnumWindowsでトップレベル(アクティブという意味ではない)のウィンドウハンドルを取得 EnumWindowsは引数にコールバック関数が必要なのでコールバック関数を定義↓ 2.GetWindowTextLengt…

【Python】str.isdigitsは小数を判定できない罠

文字列が数値かどうか判定するstr.isdigits"."が含まれていると数値として判定してくれない。 str.isdigits("123") >> True str.isdigits("12.3") >> False 回避方法としては簡単なものはreplaceメソッドで"."を""に置換してしまうこと。 str.isdigits("12.3…

【Python】openCVのcv2.imshow()でエラー error: (-215) size.width>0 && size.height>0 in function cv::imshow

動画を読み込んで表示するプログラムでエラーが発生。 import cv2 src_m = cv2.VideoCapture("ファイル名") r, f = src_m.read() #←1フレーム読み込み cv2.imshow('title', f) #←フレーム表示 aviファイルはエラーが出ずに表示できるものとできない物があっ…

【Python】マウス左クリックした位置の画面座標を取得しコンソールに出力

win32apiの user32.GetCursorPosとuser32.GetAsyncKeyStateを組み合わせて 左クリックした位置の座標を取得し,コンソールに出力するプログラム下記は2回クリックして1回目が左上,2回目を右下とする矩形の座標を呼び出し元に返すプログラム # -*- coding: ut…

【Python】win32apiを使ってあるキーが押されたか検知する

関数名は user32.GetAsyncKeyState(vk_leftbutton) キーボードだけでなくマウスクリックも検知できる。戻り値が0x8000, 2進数だと16bitで 0b1000 0000 0000 0000 が返ってこれば押されてると判定。 押されていない時の戻り値は確か0だったはず。引数にはバ…

【Python】win32apiを使ってデスクトップ座標の取得

デスクトップ座標をwin32apiを使ってゲットするにはまずc言語での構造体をpython上で定義してあげる必要がある。今回は構造体用にクラスを作ってそのインスタンスを使う。 # 構造体を定義 class _pointer(ctypes.Structure): _fields_ = [ ('x', ctypes.c_lo…

【Python】FFmpegでのエンコード時に出たエラー Error while opening encoder for output stream #0.0

ネットを探すとどうやらH.264でエンコードする際によく出るみたいだけど,自分のところではwmvでも発生した。原因はおそらくソースの動画サイズが 495x697で奇数だったこと。FFmpegのオプションで -s 494x696 を指定したら上手くいった。 H.264でのエラーは…

【Python】matplotlibでy2軸のグラフに凡例を表示させる方法

y2軸のグラフを書いてそれぞれの軸の凡例をまとめて表示しようとした際,普通にlengedを呼ぶだけだとうまくいかない。グラフのハンドルと表示名を引数に与えてあげる必要がある。それでもはまったのがグラフのハンドルは通常リストなのでlegendにそのまま与え…

【Python】pytesseractを使ってみた

OCRモジュールのpytesseractのPython版を使ってみた。最初はtesseractを使ってみたけど何故かPythonが動作停止に。その前にまずpythonのtesseractはC++のラッパーなのでtesseract-OCRのインストールが必要。 github.comその次にPythonで下記を実行 import te…

【Python】ベクトルから要素の抽出(条件と一致したもの,Trueのインデックス)

Numpyで動作は確認しているがlistで動作するかは未確認 -> 2019.5.13 listの場合を追加 これは覚えておくと便利 numpyの場合 listの場合 numpyの場合 条件に合うものを抽出 a = numpy.array([1,2,3,4,5,6]) a = a[a%2 ==0] >>array([2, 4, 6]) #←条件が合う…

【Python】Numpyのndarrayは1xN行列とベクトルが全くの別物!

MATLABと大きく違う点を今更ながら気づいた…。 なんかおかしいな、やりづらいなと思っていた点ですっきりしたのでメモ。 numpy.arange(0,10,1) >> array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) # ←これはベクトル a = numpy.arange(0,10,1) a.reshape(1,10) >> ar…

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

沢山の方法があってどれを使うといいのか迷ってしまう。 いくつか試したのでその結果のメモ。1. win32clipboard(pywin32の一部と思う) # ストリームを開く win32clipboard.OpenClipboard() # データ取得 win32clipboard.GetClipboardData() # ストリームを閉…

【Python】クリップボードにウィンドウをキャプチャ

matplotlibにはMATLABの様にグラフのハードコピー機能がないため, 自作するための下調べ。下記が参考になりそう。d.hatena.ne.jp pytan.hatenablog.com

【Python】Numpyで行列の連結

良く忘れるのでメモ。こちらが大変わかりやすい!qiita.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=()"はタプルが必要なので 一…

【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の場合 c…

【Python】py2exeで作成したプログラムで実行時にコンソールを表示させないようにする

setup.pyで windows = [ {"script" : "***.py",} ],"windows ="とすればコンソールは表示されなくなった。 "console ="とすればコンソール表示に戻る。 (exe化するpyファイルの拡張子を.pywにしても同様の効果があると どこかに書いてあったけどダメだった)

【Python】py2exeでexe化したときのエラー

py2exeを使ってexe化しようとしたときに出たエラー error: [Errno 2] No such file or directory: 'MSVCP90.dll'MSVCP90.dllをどこかのフォルダから探してきて python.exeがあるフォルダにコピーすれば動くようになった。 (たぶんPathが通っているフォルダ…

【Python】Numpyのndarrayを反転(逆順)にする

ndarrayだけじゃなくrangeでも使える方法。numpyの関数ならnumpy.fliplrを使えばいいんだけど 1次元の場合ちょっと工夫が必要で a = np.fliplr([ndarray])[0] てやらないとエラーがでる。なので逆スライスを使って a = ndarray[::-1] とした方がラク。ステッ…