为了账号安全,请及时绑定邮箱和手机立即绑定

迭代一个文本文件,如何在循环中继续下一行?

迭代一个文本文件,如何在循环中继续下一行?

跃然一笑 2021-08-17 10:13:47
我是 python 的新手,我在让我的脚本做我需要的事情时遇到了一些困难,我需要一些帮助。我的代码可能也可以更好地排序,如果它很乱,我很抱歉。整个脚本只是自动执行手动任务。步骤如下:打开带有两个选项卡的浏览器登录两个网站,每个选项卡一个读取并复制文本文件 test.txt 中的第一行,其中包含一封电子邮件将第一行的值粘贴到网页 1 上的文本字段并按 RETURN使用硒在网页上获取一些数据1它将值粘贴到网页 2 上并在网页 2 上发送短信 7. 复制网页 2 的输出打开第三个 URL,并粘贴来自网页 2 的输出从第 3 步开始重复(?)目前所有这些工作都很神奇,但是当整个脚本完成后,我希望它返回到第 3 步,但这次读取文本文件中的第 2 行。在阅读第 3 行等之前再次执行步骤 3-8。我该怎么做?这个想法是我有一个 .txt 文件,其中包含许多电子邮件地址,每行一个,我的脚本在每个地址上执行此过程。如果可能,我还希望脚本在阅读后将“-Successful”附加到每一行。因此脚本将运行 x 次,具体取决于 test.txt 中的行数。如果可能的话,最好也进行一些错误处理,即如果有任何错误,则移至文件中的下一行。我怎么能在这里实现我想要的?感谢任何帮助!
查看完整描述

2 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

我看到的第一件事是,一次searchB()叫你通过test.txt文件的全部内容循环。

with open('C:\\Users\\user\\test.txt','r') as f:
        for email in f:

在遇到 EOF 之前不会停止。与其将循环放在您的searchB()函数中,不如将其放在 main 中,这样您就可以拥有更多控制权并searchB()在您想要的 test.txt 文件中的任何行上调用。

对于日志,您需要查看日志库,这将允许您指定日志文件并在写入某些内容或调用失败后放置日志消息。附加- successful到行尾会非常烦人。


查看完整回答
反对 回复 2021-08-17
?
冉冉说

TA贡献1877条经验 获得超1个赞

我通过将循环移动到主函数来解决这个问题,如下所示:


def main():


    driver.execute_script('window.open("{}");'.format(''))

    login()


    driver.switch_to_window(driver.window_handles[0]) # Use first tab

    emailSearch = driver.find_element_by_id('quicksearchinput') # Identify Quicksearch text-field

    with open('C:\\Users\\user\\test.txt','r+') as f:

        for email in f:

            searchB(email) ## <-- Added this

            print(email)

我的 searchB() 函数是这样的:


def searchB(mail):  ## <-- Added this

    driver.switch_to_window(driver.window_handles[0]) # Use first tab

    emailSearch = driver.find_element_by_id('quicksearchinput') # Identify Quicksearch text-field

    emailSearch.send_keys(email, Keys.RETURN)

    sendSMS()


查看完整回答
反对 回复 2021-08-17
  • 2 回答
  • 0 关注
  • 196 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号