Я пытаюсь вызвать скрипт Python (2.7) из Sikuli (r930) и использовать переменную из скрипта. Ниже приведен код Python:
import sys
import re
import os
import time
from pywinauto import application
from SendKeys import SendKeys
from cStringIO import StringIO
app=application.Application()
app.connect_(path=r'C:\Program Files\myApp\myApp.exe')
backup = sys.stdout
sys.stdout = StringIO()
app.dlg.print_control_identifiers()
out = sys.stdout.getvalue()
sys.stdout.close() # close the stream
sys.stdout = backup # restore original stdout
regex = re.compile(r'(\d{8}\s*\-\s*\d{8})')
found = re.search(regex, out)
print found.group(0) #pass this variable to Sikuli
Я фиксирую stdout
, потому что это то, что возвращает метод Pywinauto print_control_identifiers
(а не строка). Кроме того, мне нужен хешированный серийный номер из приложения с графическим интерфейсом, который я не могу получить с помощью Sikuli, поэтому необходимо использовать Pywinauto. Однако, когда я пытаюсь позвонить execfile()
из Sikuli, я получаю сообщение об ошибке:
ImportError: no module named Pywinauto.
Я прочитал документацию и знаю, что Sikuli (Jython) может включать модули и скрипты Python. Кроме того, внешний файл .py, который я вызываю, успешно работает при независимом запуске. Может ли кто-нибудь сказать мне, если я пропустил шаг?
Код, который я использую для вызова файла .py, показанного выше, из Sikuli:
aScript = 'c:\\getHash_serial.py'
execfile(aScript)