Python文件读取时readline异常迭代的原因是什么?如何修复?
问题原因
你同时使用了两种文件逐行读取机制,触发了重复读行的问题:
- Python的文件对象本身是可迭代对象,
for line in f的执行逻辑是:每进入一次循环,就自动从当前文件指针位置读取一行内容存入line变量,同时将指针移动到下一行的开头 - 你在循环体内又额外调用了
f.readline(),这个方法也会从当前指针位置读取下一行并移动指针,等于每次循环会连续读两行,for循环读出的第一行没有被使用就被跳过了,所以你拿到的永远是奇数行(跳过首行、第三行……)
修正方案
只保留一种读取逻辑即可,推荐直接使用for遍历的行变量,代码最简洁:
with open('deltas11min.txt', 'r') as f: for line in f: # 直接用for循环读出的line变量即可,无需额外读行 firstchar = line[:1] if firstchar == 'a': # 你的剩余业务逻辑 pass
如果偏好使用readline写法,可以去掉for循环,改用while判断读取终止:
with open('deltas11min.txt', 'r') as f: while True: f_str = f.readline() # readline读到文件末尾会返回空字符串,作为循环终止条件 if not f_str: break firstchar = f_str[:1] if firstchar == 'a': # 你的剩余业务逻辑 pass
内容的提问来源于stack exchange,提问作者doorkicker
相关产品推荐
相关产品推荐

