У меня есть блок кода, который содержит 2 для циклов и глубокое соответствие строк.Когда условие вызывает этот поиск, я хочу, чтобы у пользователя был «Выход» из этого цикла, поскольку он может работать ДЛИННОЕ время.Я обнаружил, что в среднем, когда мой код достигает этого поиска, он обычно находит совпадение через 2 - 15 секунд ИЛИ не делает этого вообще.
Я нашел в Интернете код об использовании msvcrt.kbhit () и getche () для использованиянажатие клавиши, чтобы позволить это.Я пытался все варианты, которые я могу придумать, чтобы связать все это воедино, но я столкнулся с одними и теми же проблемами.
Код, который я хочу запустить для выполнения глубокого поиска, запускает и находитсовпадение и никогда не завершается само по себе.
То же, что и 1, но будет ждать, пока я нажму клавишу ввода, чтобы выйти из цикла, который не является правильным.
Код запустится, найдет совпадение и выйдет самостоятельно, ТОГДА я протестирую входы, которые не найдут совпадение, и выход «enter» не будет работать.
ImНахождение моего двойного цикла for и текущие разрывы, чтобы получить наш цикл, затрудняют размещение всего в правильном месте.Любая помощь будет принята с благодарностью!
В конце концов.Я хочу, чтобы мои двойные циклы запускались и разрывались, когда совпадение найдено, и непрерывно пытались сделать совпадение, пока оно либо НЕ СДЕЛАНО, либо пользователь нажимает ввод, чтобы выйти.
Исходный код проблемы:
if foundHeadline == False:
print 'Still didnt find Headline and performing a deep dive search'
find = False
keyboard = Controller()
# startTime = time.time()
# elapsed = 0
# while elapsed < 10:
# userinput = raw_input("Press Enter to Stop Search: ")
running = 0
print 'Press Enter to Exit Search . . .'
# findVariable = False
while not msvcrt.kbhit() or msvcrt.getche() != '\r':
for i in range(15):
headlineFound = 0
for subset in itertools.combinations(itemsList, i):
if ''.join(subset) == cmcHeadline:
# print(''.join(subset))
headlineFound += 1
if headlineFound == 2:
print 'Deep Dive Headline Found: ', ''.join(subset)
find = True
foundHeadline = True
keyboard.press('\r')
keyboard.release('\r')
# findVariable = True
break
if find:
break
if msvcrt.getche() == '\r':
print 'Breaking out of Search'
Обновленный код решения
if foundHeadline == False:
print 'Still didnt find Headline and performing a deep dive search'
find = False
keyboard = Controller()
print 'Press "Ctrl + C" to exit the search. . .'
print ''
try:
while True:
for i in range(15):
headlineFound = 0
for subset in itertools.combinations(itemsList, i):
if ''.join(subset) == cmcHeadline:
# print(''.join(subset))
headlineFound += 1
if headlineFound == 2:
print 'Deep Dive Headline Found: ', ''.join(subset)
find = True
foundHeadline = True
print ''
keyboard.press(Key.ctrl.value)
keyboard.press('c')
keyboard.release('c')
keyboard.release(Key.ctrl.value)
break
if find:
break
except KeyboardInterrupt:
pass