Anaconda : Python でsikuliをAutoHotkeyに変換

pythonで変換

Sikuliで画像認識すぐにスタートしないのでAutoHotkeyに変えてみました

ファイルに日本語あるとOpenエラー(UnicodeDecodeError)

UnicodeDecodeError:’cp932′ code can’t decode byte 0xef in position 182: illegal multibyte sequence

日本語文字含まれているときは、エンコード指定してファイルを開かないといけないみたいです。

解決策としてしたこと:

f = open(‘guiChange.au3′,’r’,encoding=’utf-8′)

ファイルを読む時、エンコードを指定するとうまくいきました。

ファイルを読み込んで変数に入れる

with open('.\sikuli\sikuli.py') as f:

    s = f.read()

print(s)
.\sikuli\sikuli.py = sikuli\sikuli.py は同じです。

for i in range(2)    for ループ

for i=0 ~~  ではない

range(2)   2回のみ(0,1) 012ではない

変数に「複数行の文字列」

s = ”’ ~~~
~~~
~~~ ”’

Python 3 の正規表現で文字列抜き出す

x = re.search("(?<=\").*(?=\")",s)

re.search() うまくいきますが、re.match()はうまく行かない

とりあえず動いたコード

import re
import sys, cv2

x = "xxx.png"
s_add = ''' 
;-----------------------------------------
;画像検索 ファイル名””イラナイ
WinGetPos,,, W, H, A
ImageSearch, x, y,0,0, %%W%%, %%H%%, *50 %s 
;見つけた画像の左上の座標
MouseClick, L, X+%d, Y+%d, 1
Sleep,300
'''
s_change = ""


f = open('sikuli\sikuli.py')
for i in range(3):
s = f.readline()
getName = re.search("(?<=\").*(?=\")",s)
imgName = "sikuli\%s" %(getName.group())
#x = re.match(".*",s)
if "click" in s:
# 対象画像読み込み
img = cv2.imread(imgName,0)
# 画像の大きさを取得
height, width = img.shape[:2]
#print("width: " + str(width))
#print("height: " + str(height))

s_change = s_change + s_add % (getName.group(),width/2,height/2)
print(s_change)
f.close
(base) F:\studyData\Autohotkey\gas_autoHot>python sikuli_hotkey.py > test.ahk
コマンドラインで「test.ahk」に出力してます。
先頭に:
#3::
を追加
これで、win+3で起動します。

コメント