Цикл Python For перестает работать в середине - PullRequest
0 голосов
/ 22 февраля 2019

Переменные в списке отлично работают с кодом: pyautogui.typewrite (i) и перестают работать случайным образом в середине списка.

Какие улучшения могут быть сделаны в следующем, и как я могу получить его до конца файла любой ценой?

Может ли он иметь какое-то отношение к другим операторам, кромедля цикла, или я должен придумать лучший подход для извлечения списка из текстового файла?

Спасибо за вашу помощь заранее.

results = []
    with open('H:\RetiredDevices.txt') as inputfile:
        for line in inputfile:
            results.append(line)


while True:

    for i in results:
        pyautogui.click(PressEnter1)
        pyautogui.click(PressEnter1)
        time.sleep(1)
        pyautogui.click(PressEnter2)
        #pyautogui.click(PressEnter3)
        pyautogui.click(PressEnter4)
        pyautogui.typewrite(i)
        pyautogui.press('enter')
        time.sleep(1)
        retired_devices.append(i)
        results.remove(i)


    if len(results) == 0:
        break

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Не используйте results.remove(i) в самом цикле.Как правило, вы не хотите добавлять или удалять объекты из списка, который вы повторяете, в то время как вы все еще просматриваете его.Обычно я бы предложил добавить все элементы, которые необходимо удалить, в другой список, а затем выполнить итерацию по этому списку, чтобы удалить их из исходного списка.Здесь похоже, что вы уже добавляете их в retired_devices, поэтому я бы перебрал retired_devices после окончания цикла и results.remove(i) для каждого i в retired_devices.Вам также не нужен цикл while, цикл for закончится, когда он будет завершен со всеми элементами.

0 голосов
/ 22 февраля 2019

Это заставляет вас пропустить некоторые элементы в вашем списке: results.remove(i)

Демо:

res = [k for k in range(0,10)]

for i in res:
    print(i)
    res.remove(i)

>>>output
    0
    2
    4
    6
    8
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...