Кибор » Кибор - Интегрированная среда разработки ботов » О программе Кибор » Версия 6.13 Интеграция исполняемого кода Кибор в код Python

Страниц (1): [1]
 

1. Kibor - 22 Апреля, 2023 - 07:18:14 - перейти к сообщению
Многопроцессорность Python. Запуск нескольких процессов Python, работающих одновременно и незавивисимо друг от друга

Оператор kiborcode позволяет встраивать исполняемый код Кибор непосредственно в код Python в блоках __python_sync и __python
Использовать Кибор переменные и функции в коде Python.

Примеры:

Передача значения переменной Кибор в код Python
CODE:
string Rez_Cut_Text="После";

enableconsolepython(1, 1, 50, 50, 400, 600);

if (runpython()==1)
{
__python_sync
Rez_Cut_Text='Текст до'
print (Rez_Cut_Text)
Rez_Cut_Text='kiborcode (Rez_Cut_Text)'
print (Rez_Cut_Text)
__end_python
messagebox ("");
closepython();
}


Перед Кибор кодом надо указывать оператор kiborcode
Если используется одна Кибор переменная, можно ее не брать в круглые скобки:
CODE:
enableconsolepython(1, 1, 0, 0, 500, 768);
if (runpython())
{
int A=5;
__python_sync
print (kiborcode A)
__end_python
messagebox("Закрыть");
closepython();
}




При использование сложного кода, надо его взять в круглые скобки.
В данном примере переменные A и B Кибора, а переменная C Python:
CODE:
int A=5;
int B=5;
__python_sync
C=7
print (kiborcode (A+5-B)+C)
__end_python


Вызов функций:
CODE:
int A=5;
int B=5;
__python_sync
C=7
print (kiborcode (A+fun(B+5)+rand(5, 500))+C)
__end_python

function fun(int q)
{
return q+2;
}


Код Кибор внедренный в код Python имеет подсветку Кибора.
При использование спец и экранирующего символа в коде Кибор необходимо придерживаться правил Кибор.
kiborcode сам преобразуем экранирующий и спецсимволы к коду Python.
Экранирующий и спец символы

Пример:
Допускается встравание оператора kiborcode непосредственно в текстовую строку Python, обрамленнню '' или ""
CODE:
string W="перенос^nстроки";

__python_sync
print ('Перенос\nстроки\nPython\n kiborcode (W+"^nКибор")')
__end_python


CODE:
string W="перенос^nстроки";

__python_sync
print ('Перенос\nстроки\nPython\n'+'kiborcode (W+"^nКибор")')
__end_python


Подробное пояснение и демонстрация на видео


При использование оператора kiborcode

код с
CODE:
Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:43:08) [MSC v.1926 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> #Импорт
>>> from selenium import webdriver
>>> ex = r'1366'
>>> ey = r'768'
>>> exe_path = r'D:/Skript/RoboClicker/Release/python/webdriver/geckodriver.exe'
>>> binary = r'C:/Program Files/Mozilla Firefox/firefox.exe'
>>> exe_path = r'D:/Skript/RoboClicker/Release/python/webdriver/geckodriver.exe'
>>> binary = r'C:/Program Files/Mozilla Firefox/firefox.exe'
>>> web = webdriver.Firefox(executable_path = exe_path, firefox_binary = binary)
>>> web.set_window_size(ex, ey)
>>> Url = r'https://www.google.com'
>>> Time = r'2'
>>> try:
... web.set_page_load_timeout(Time)
... web.get(Url)
... except TimeoutException as e:
... time.sleep(1)
...
>>>


сокращается до
CODE:
Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:43:08) [MSC v.1926 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> #Импорт
>>> from selenium import webdriver
>>> web = webdriver.Firefox(executable_path = 'D:/Skript/RoboClicker/Release/python/webdriver/geckodriver.exe', firefox_binary = 'C:/Program Files/Mozilla Firefox/firefox.exe')
>>> web.set_window_size(1366, 768)
>>> try:
... web.set_page_load_timeout(2)
... web.get('https://www.google.com')
... except TimeoutException as e:
... time.sleep(1)
...
>>>
2. Redear - 22 Апреля, 2023 - 07:21:59 - перейти к сообщению
Супер!
3. Redear - 23 Апреля, 2023 - 11:26:53 - перейти к сообщению
вопрос, есть какой то способ перенести массив состоящий из строк в пифоне в массив кибора. спасибо
4. Kibor - 23 Апреля, 2023 - 11:49:53 - перейти к сообщению
 Redear пишет:
вопрос, есть какой то способ перенести массив состоящий из строк в пифоне в массив кибора. спасибо

Медленный.
CODE:
runpython(0);
enableconsolepython(1, 1, 0, 0, 500, 500);


__python_sync
Prime = ['string1', 'string2', 'string3']
__end_python

string array[999];
int array_python=formatsn(sendgetpython("print(len(Prime))"));
for (int n=0; n<array_python; n++)
{
array[n]=sendgetpython("Prime["+format(n)+"]");
regexreplace(-1, #array[n], array[n], "^\^'|\^'$", "");//Удаляем ''
}

for (n=0; n<array_python; n++)
{
messagebox(array[n]);

}

closepython();

Либо отправьте весь массив сразу и распарсте его Кибором.
5. Redear - 23 Апреля, 2023 - 12:05:22 - перейти к сообщению
я +- так же решаю эту проблему, и дело в том что задача скачать гугл таблицу (через api), и потом этот большой двумерный массив данных распарсить. и все бы ничего мой код с этой задачей справляется, проблема только в том, что при включении режима отладки обработка данных растягивается на очень длительный срок.
и бы предложил в режиме отладки добавить функционал, что бы можно было выключить из отладки определенные функции, если вообще такое возможно.

и еще вопрос, не побывал, но чисто теоретически новая функция kiborcode должна без проблем перемещать двумерный массив строк в массив пайтон, я прав?
6. Zireael - 23 Апреля, 2023 - 12:11:20 - перейти к сообщению
В пайтоне собрать массив в 1 строку, передать в кибор, разделить регуляркой на отдельные строки.
7. Redear - 23 Апреля, 2023 - 12:20:03 - перейти к сообщению
 Zireael пишет:
В пайтоне собрать массив в 1 строку, передать в кибор, разделить регуляркой на отдельные строки.

CODE:

sendpython("credentials = "+GSKeyWH);
__python_sync
import gspread
gc = gspread.service_account_from_dict(credentials)
sh = gc.open_by_key('kiborcode rez')
worksheet = sh.worksheet('BD')
res = worksheet.get_all_values()
print (res)
__end_python

string GetBD = sendgetpython("print(res)");
string trash;
initialarray(#BD[0][0], "");
int i=0; int j=0;

regexreplace(1, #GetBD, GetBD, "\[[", "[");
regexreplace(1, #GetBD, GetBD, "(\]])$", "], ");
regexreplace(-1, #GetBD, GetBD, "^"", "^'");

while (GetBD!="") {
regexreplace(1, #GetBD, GetBD, "(^')(\])(\,) ", "^']#");
trash=cuttext( GetBD,"[", "#")+",";
GetBD=cuttext( GetBD,"#", "");
i=0;
while (trash!="") {
regexreplace(1, #trash, trash, "(^')(\,)", "#");
BD[i][j]=cuttext( trash,"^'", "#");
trash=cuttext( trash,"#", "");
if (trash=="") { break; }
i++;
}
j++;
}

мой рабочий вариант, ньанс в том что, в ячейках таблицы есть данные с конструкцией ],
есть варианты оптимизации?
(Добавление)
и кстати kiborcode длинную строку разбивает и добавляет /n, что в итоге, например, делает недействительным кодключ.
8. Kibor - 23 Апреля, 2023 - 12:28:02 - перейти к сообщению
 Redear пишет:
я прав?

Нет.
Ее назначение упростить синтаксис.
(Добавление)
 Redear пишет:
и кстати kiborcode длинную строку разбивает и добавляет /n, что в итоге, например, делает недействительным кодключ

Предусмотрите это.
(Добавление)
 Redear пишет:
мой рабочий вариант

Что то он не совсем рабочий для запуска и проверки идеи, даже если добавить несколько начальных строк.

Powered by ExBB FM 1.0 Final