Python For循环在中间停止工作

时间:2019-02-22 02:49:26

标签: python selenium for-loop while-loop

列表中的变量可以很好地与代码pyautogui.typewrite(i)一起使用,并在列表的中途停止进行随机处理。

接下来可以进行哪些增强,我如何不惜一切代价使它到达文件末尾?

它可能与for循环以外的其他语句有关系吗?还是我想出一种更好的方法从文本文件中获取列表?

谢谢您的帮助。

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 :(得分:3)

这导致您跳过列表中的某些元素: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

答案 1 :(得分:2)

请勿在循环本身中使用results.remove(i)。通常,您不想在迭代过程中添加或删除列表中的内容。通常,我建议将所有要删除的项目添加到另一个列表中,然后遍历该列表以将其从原始列表中删除。在这里,您好像已经将它们添加到retired_devices中,因此我将在循环结束后遍历retired_devices并为results.remove(i)中的每个i遍历retired_devices。您也不需要while循环,for循环将在处理完所有元素后结束。