Как прописать правильное условие Python

feniks

Новичок
Пользователь
Апр 6, 2020
8
1
3
Подскажите, пожалуйста, что мне подправить в коде чтобы сделанный только что скрин искал похожий по изображению в одной папке, если находит True, если не находит, то ищет в другой папке, если находит True.
У меня получается так: выставляется сразу функции start_B() и start_S() и на этом выполнение кода заканчивается. А нужно бесконечная цикличность с поиском похожего скрина.

Python:
def start_B():
    x, y = pyautogui.position()
    pyautogui.moveTo(1268, 481, duration = 1)
    pyautogui.click(1268, 481)
    pyautogui.moveTo(x, y)
##    time.sleep(1)
 
def start_S():
    x, y = pyautogui.position()
    pyautogui.moveTo(1259, 544, duration = 1)
    pyautogui.click(1259, 544)
    pyautogui.moveTo(x, y)
##    time.sleep(1)
    
# сравнение скринов
def rmsdiff_2011(img1, img2):
    with Image.open(img1) as im1, Image.open(img2) as im2:
        return im1 == im2
 
 
# поиск совпадений
def find_image1(path1, path2, image_list, img):
    # поиск в цикле нужного скрина
    for image in image_list:
        if rmsdiff_2011(path1 + img, path2 + image):
            break
            return start_B()
        else:
            time.sleep(30)
 
# поиск совпадений
def find_image2(path1, path3, image_list1, img):
    # поиск в цикле нужного скрина
    for image1 in image_list1:
        if rmsdiff_2011(path1 + img, path3 + image1):
            break
            return start_S()
        else:
            time.sleep(30)
 
 
def finder():
    # список файлов в папке со скринами
    path1 = 'D://Мася/ImageBot/-vse/'
    path2 = 'D:/Мася/ImageBot/-B/'
    path3 = 'D:/Мася/ImageBot/-S/'
 
    image_list = os.listdir(path2)
    image_list1 = os.listdir(path3)
 
    filename = None
    while True:
        time.sleep(1)
        box = (1040, 77, 1180, 728)
        im = ImageGrab.grab(box)
        filename = str(int(time.time())) + '.png'
        im.save(path1 + filename, 'PNG')
        if find_image1(path1, path2, image_list, filename):
            start_B()
        else:
            if find_image2(path1, path3, image_list1, filename):
                start_S()
            else:
                time.sleep(30)
 
def main():
    finder()
##    pass
        
    
if __name__ == '__main__':
    main()
 

Форум IT Специалистов