Python输出整个文本文件,而不是按lin行输出

2024-06-16 11:08:02 发布

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

我试图输出数据从一个文本文件逐行到一个网站上的搜索框。我正在使用Selenium与网页进行交互

但是,当我的代码写入网页上的文本字段时,它会粘贴文本文件的全部内容,而不是第一行,加载页面,然后搜索第二行,依此类推。。。。。请看下面我的代码:

with open("SerialNumbers.txt") as sn:
    for line in sn:
        search_field = driver.find_element_by_id('criteria[1][1]')
        search_field.click()
        serials = sn.read().splitlines()
        search_field.send_keys(serials)
        search_field.send_keys(Keys.ENTER)

当发送文本文件(serials)的第一行到search\字段时,它开始写入SerialNumbers.txt的全部内容

如果可能的话,请告诉我哪里出错了,因为我确信将变量定义为sn.read().splitlines()应该告诉python从列表中逐行读取


Tags: 数据代码txtsend网页fieldreadsearch
2条回答

也许你的文件改成这样:

with open(r'c:\Users\xf01145\Downloads\scores.txt') as file:
    lines = file.readlines()
    for line in lines:
        print(line, end='')

查看代码,由于for line in sn:,您已经在迭代文件的行了。但是,serials = sn.read().splitlines()会导致serials包含文件中的行列表。因为send_keys可以获取要发送的键列表,它只发送文件中的所有数据。如果您想搜索一行,然后搜索下一行,等等,那么我建议您将line放在第一行send_keys中,如下所示:

with open("SerialNumbers.txt") as sn:
    for line in sn:
        search_field = driver.find_element_by_id('criteria[1][1]')
        search_field.click()
        search_field.send_keys(line)
        search_field.send_keys(Keys.ENTER)

您可能需要修剪行尾,因为每行都可能包含\n字符。您可以使用str.rstrip()来完成这项操作,它将删除所有尾随的空格字符,如果这不会中断您的搜索

或者,您可以执行sn.read().splitlines()并像这样迭代:

with open("SerialNumbers.txt") as sn:
    serials = sn.read().splitlines()
    for serial in serials:
        search_field = driver.find_element_by_id('criteria[1][1]')
        search_field.click()
        search_field.send_keys(serial)
        search_field.send_keys(Keys.ENTER)

相关问题 更多 >