我有一个文本文件。我正在使用正则表达式解析一些数据。所以打开文件并阅读它并解析它。但我不想在该文本文件中的某些特定行之后读取和解析数据。例如
file start here..
some data...
SPECIFIC LINE
some data....
现在我不想在SPECIFIC LINE之后阅读文件...... 当那条线到达时有没有办法停止阅读?
答案 0 :(得分:5)
这很简单,您可以使用break
语句提前终止循环。
filename = 'somefile.txt'
with open(filename, 'r') as input:
for line in input:
if 'indicator' in line:
break
使用with
创建一个复合语句,确保在进入和离开with
语句__enter__()
和__exit__()
的范围时分别进行调用。出于文件读取的目的,这将防止任何悬空文件句柄。
break
语句告诉循环立即终止。
答案 1 :(得分:4)
使用iter()
的{{1}}参数:
sentinel
输出:
with open('test.txt') as f:
for line in iter(lambda: f.readline().rstrip(), 'SPECIFIC LINE'):
print(line)
答案 2 :(得分:0)
只读取前 n
行而不加载整个文件:
n = 5
with open(r'C:\Temp\test.txt', encoding='utf8') as f:
head = [next(f) for x in range(n)]