从文件中读取行并存储为变量,以便在重复之前在另一个函数中使用

2024-04-25 04:40:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python还很陌生,目前在尝试改进脚本时遇到了麻烦。我有一个脚本,它使用selenium来执行许多操作,以自动化手动任务。这些脚本打开两个页面,搜索电子邮件,从该页面获取数据并将其发送到另一个选项卡。我需要帮助饲料脚本一个文本文件包含电子邮件地址列表,一次一行,并使用每一行搜索网页。我需要的是:

  1. “打开文件”测试.txt““
  2. 读取文本文件的第一行并存储此值以供在另一个函数中使用。你知道吗
  3. 执行使用文本文件中的行作为其输入值的函数。你知道吗
  4. 在移动到下一行之前,在文本文件的第一行后面添加“Completed”
  5. 移到并读取下一行i文本文件,将其存储为变量并从步骤3开始重复。你知道吗

我不知道该怎么做。你知道吗

下面是我当时的一段代码:

def fetchEmail():
    fileName = input("Filename: ")
    fileNameExt = fileName + ".txt" #to make sure a .txt extension is used
        line = f.readline()
        for line in f:
        print(line) # <-- How can I store the value here for use later?
        break

def performSearch():
    emailSearch = driver.find_element_by_id('quicksearchinput')
    emailSearch.send_keys(fetchEmail, Keys.RETURN) <--- This is where I want to be able to paste current line for everytime function is called.
    return main

如果能帮我解决这个问题,我将不胜感激。你知道吗


Tags: to函数txt脚本foris电子邮件def
1条回答
网友
1楼 · 发布于 2024-04-25 04:40:36

诊断您的特定问题有点棘手,因为您实际上没有提供真正的代码。不过,以下其中一项可能会对您有所帮助:

  • 返回fetchEmail中所有行的列表,然后在send_keys中搜索所有行:

    def fetchEmail():
        fileName = input("Filename: ")
        fileNameExt = fileName + ".txt"
        with open(fileNameExt) as f:
            return f.read().splitlines()
    
    def performSearch():
        emailSearch = driver.find_element_by_id('quicksearchinput')
        emailSearch.send_keys(fetchEmail(), Keys.RETURN)
        # ...
    
  • 一次交出一个,然后逐个寻找:

    def fetchEmail():
        fileName = input("Filename: ")
        fileNameExt = fileName + ".txt"
        with open(fileNameExt) as f:
            for line in f:
                yield line.strip()
    
    def performSearch():
        emailSearch = driver.find_element_by_id('quicksearchinput')
        for email in fetchEmail():
            emailSearch.send_keys(email, Keys.RETURN)
        # ...
    
  • 我不建议使用globals,应该有更好的方法在函数之间共享信息(比如在类实例中同时使用这两个函数,或者像我上面所展示的那样让一个函数调用另一个函数),但是下面是一个示例,说明如何在调用第一个函数时保存值,并在以后任意时间在第二个函数中检索结果:

    emails = []
    
    def fetchEmail():
        global emails
        fileName = input("Filename: ")
        fileNameExt = fileName + ".txt"
        with open(fileNameExt) as f:
            emails = f.read().splitlines()
    
    def performSearch():
        emailSearch = driver.find_element_by_id('quicksearchinput')
        emailSearch.send_keys(emails, Keys.RETURN)
        # ...
    

相关问题 更多 >