Как запустить функцию в python на постоянное выполнение при обновление информации
У меня есть код, который сначала вытягивает у пользователя телеграм бота изображение, потом прогоняет его через pytesseract и на выходе (на данный момент) печатает результат в консоли, но при попытке скинуть второе изображение, файл меняется, но функция не выводит результат со второй картинки, подскажите, как правильно сделать этот цикл
bot = telebot.TeleBot("id")
@bot.message_handler(content_types=['photo'])
def photo(message):
fileID = message.photo[-1].file_id
file_info = bot.get_file(fileID)
downloaded_file = bot.download_file(file_info.file_path)
with open("image.jpg", 'wb') as new_file:
new_file.write(downloaded_file)
img = Image.open("image.jpg")
pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"
a = pytesseract.image_to_string(img)
string = a
operations = ['+', '-', '/' ,'*']
operation = ''
counter = 0
one_number = list()
two_number = list()
l = [i for i in string]
for elem in l:
if elem in operations:
operation = elem
counter += 1
elif elem.isdigit() and operation == '':
one_number.append(elem)
elif elem.isdigit() and operation != '':
two_number.append(elem)
if counter == 1 and one_number != [] and two_number != []: # Проверка, что бы был один мат оператор, и по обе стороны от него были цифры
if operation == '+':
result = int(''.join(one_number)) + int(''.join(two_number))
if operation == '-':
result = int(''.join(one_number)) - int(''.join(two_number))
if operation == '/':
result = int(''.join(one_number)) / int(''.join(two_number))
if operation == '*':
result = int(''.join(one_number)) * int(''.join(two_number))
print(result)
else:
print('Не расспознано')
bot.polling(none_stop=True, interval=0)
Ответы (2 шт):
Автор решения: Sabrina Spellman
→ Ссылка
Предположу, что проблема в том, что код по преобразовании картинки находится вне функции, поэтому программа до нее не доходит.
Автор решения: Voloading
→ Ссылка
сдвинуть на 4 пробела перобразование image,
a = pytesseract.image_to_string(img)
string = a
заменить на
string = pytesseract.image_to_string(img)
и подсказывали что преобразование без списков лучше. работать со строкой