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文件内容,但代码只执行了第一行就停止了?
来,使用 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 里面的基础知识啊。
问题返回原点了,在下面 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


