Python中迭代文件行数组时,如何获取后续行并跳过主循环迭代
解决方案
你可以利用迭代器的next()方法手动读取后续行,同时让主循环自动跳过这些行——因为迭代器是状态化的,手动调用next()推进迭代器后,外层的for循环会从新的位置继续遍历。
修改后的完整代码
editedLines = [] # 先初始化存储结果的列表 lines = [] with open('myfile.txt') as file: lines = file.readlines() line_iter = iter(lines) for line in line_iter: pos = line.find("/") if pos == 6: case_str = line[0:5].strip() # 替换内置类型名str为case_str,避免命名冲突 match case_str: case "CASE1": editedLines.append(line) case "CASE2": editedLines.append(line) case "CASE3": editedLines.append(line) # 读取后续行直到遇到CASE3_END while True: try: next_line = next(line_iter) editedLines.append(next_line) if "CASE3_END" in next_line: break except StopIteration: # 到达文件末尾仍未找到CASE3_END,终止循环避免报错 break
关键逻辑说明
- 匹配到
CASE3时,先将当前行加入结果列表,再进入内层循环处理后续行。 - 通过
next(line_iter)手动推进迭代器:每调用一次,迭代器就向前移动一位,外层for循环会跳过这些已被手动读取的行。 - 每次读取的行都会加入结果列表,直到行中包含
CASE3_END时跳出内层循环;如果读到文件末尾(抛出StopIteration异常),也会终止循环。
内容的提问来源于stack exchange,提问作者Lion King
相关产品推荐
相关产品推荐

