Python中如何逐行搜索txt文件内容,但代码只执行了第一行就停止了?

第一个很小的程序,困在这一步进行不下去了

import os

from selenium import webdriver

#打开浏览器到百度

ie_driver=os.path.abspath(r"C:\Program Files\Internet Explorer\IEDriverServer.exe")

os.environ["webdriver.ie.IEDriverServer"]=ie_driver

driver=webdriver.Ie(ie_driver)

driver.get("https://www.baidu.com")

#打开 txt f = open(r"D:\worki\hello\hello word.txt",'r')

s=f.readline()

#开始搜索 driver.find_element_by_id("kw").send_keys(s)

driver.find_element_by_id("su").click()

#找到内容

try:

driver.find_element_by_partial_link_text("大学")

print (s+“分数可能不够,再看看别的吧”)

except Exception:

print(s)

Python中如何逐行搜索txt文件内容,但代码只执行了第一行就停止了?

18 回复

来,使用 Markdown 发文或 Gist 分享代码,现在的代码格式有点乱


你这问题很典型,通常是文件读取方式没选对。直接看代码:

# 错误示范:用readline()只读第一行
with open('data.txt', 'r') as file:
    line = file.readline()  # 这就只读了第一行
    while line:
        print(line.strip())
        # 这里缺少了继续读取下一行的代码!
        # 应该加上:line = file.readline()

# 正确方案1:直接遍历文件对象(推荐)
with open('data.txt', 'r') as file:
    for line in file:
        # 这里会对每一行执行
        print(line.strip())

# 正确方案2:用readlines()读取所有行
with open('data.txt', 'r') as file:
    lines = file.readlines()
    for line in lines:
        print(line.strip())

# 正确方案3:显式循环readline()
with open('data.txt', 'r') as file:
    while True:
        line = file.readline()
        if not line:  # 读到文件末尾时退出
            break
        print(line.strip())

第一种方案最简洁高效,Python的文件对象本身就是可迭代的。你遇到的问题很可能是在某个方案中忘记更新循环条件了。

检查你的循环逻辑。

#1

这样会好一点吗?

import os

from selenium import webdriver

#打开浏览器到百度

ie_driver=os.path.abspath(r"C:\Program Files\Internet Explorer\IEDriverServer.exe")

os.environ[“webdriver.ie.IEDriverServer”]=ie_driver

driver=webdriver.Ie(ie_driver)

driver.get(“https://www.baidu.com”)

#打开 txt



f = open(r"D:\worki\hello\hello word.txt",‘r’)

s=f.readline()



#开始搜索

driver.find_element_by_id(“kw”).send_keys(s)

driver.find_element_by_id(“su”).click()

#找到内容

try:

driver.find_element_by_partial_link_text(“大学”)

print (s+“分数可能不够,再看看别的吧”)
except Exception:

print(s)

import os
from selenium import webdriver
#打开浏览器到百度
ie_driver=os.path.abspath(r"C:\Program Files\Internet Explorer\IEDriverServer.exe")
os.environ[“webdriver.ie.IEDriverServer”]=ie_driver
driver=webdriver.Ie(ie_driver)
driver.get(“https://www.baidu.com”)
#打开 txt
f = open(r"D:\worki\hello\hello word.txt",‘r’)
s=f.readline()
#开始搜索
driver.find_element_by_id(“kw”).send_keys(s)
driver.find_element_by_id(“su”).click()
#找到内容
try:
driver.find_element_by_partial_link_text(“大学”)
print (s+“分数可能不够,再看看别的吧”)
except Exception:
print(s)

readline 本来也只会 read 一行


想要把每一行都进行搜索,该怎么写呢 /头疼


万分感谢,现在的问题变成 如何把读取出来的行 赋值给 s,直接写 s=line 好像不行

f = open(r"D:\worki\hello\keyword.txt")
line=f.readline()
while line:
print (line,end="")
line=f.readline()
s=line

Python 代码靠缩进来隔开语义段,所以没有格式良好的代码很难阅读。按行一行一行读取文件可以使用:

python<br>with open(r'D:\worki\hello\hello word.txt') as fp:<br> for line in fp:<br> print line<br>

你似乎不知道 generator ? 了解一下。这是 python 里面的基础知识啊。

好像回复里不能用 markdown.

with open(r’D:\worki\hello\hello word.txt’) as fp:
<Tab>for line in fp:
<Tab><Tab>print line

一个<Tab>表示一个缩进层次。

问题返回原点了,在下面 send keys 的时候,只能进行一次,我想要的是把 txt 里全部内容的搜索一遍

generator 的确是个新名词,我来找找

实在是太感谢了,Python 代码靠缩进来隔开语义段,缩进这个词实在是太重要了

谢谢大家,问题已经解决

简单来说,你每次都是重新 open 文件来 readline() 一次,得到的当然只能是第一行。你要做的是,在 open 文件后,写个循环 readline() 读取整个文件的每一行。
建议你先找本 Python 基础教程过一遍,先把基础编程知识掌握下。

for i in 文件,每次循环 i 就是一行

我基本都这么写
f = open(r"D:\worki\hello\hello word.txt",‘r’)
for line in f.readlines ():
pass

回到顶部