如何在Python中特殊处理文件的第一行?
我经常需要处理一些大文本文件,这些文件的第一行是标题。标题通常和文件的其他内容处理方式不同,或者我对其他内容的处理还依赖于这些标题。无论如何,我都需要把第一行当作一个特殊的情况来处理。
我可以用简单的逐行读取方法,并设置一个标记:
headerProcessed = false
for line in f:
if headerProcessed:
processBody(line)
else:
processHeader(line)
headerProcessed = true
但是我不喜欢在循环中做一个测试,因为这个测试在执行的数百万次中,只有一次是有用的。有没有更好的方法?我能不能把第一行单独处理,然后让循环从第二行开始?我应该为这个问题烦恼吗?
4 个回答
3
使用 iter()
it_f = iter(f)
header = it_f.next()
processHeader(header)
for line in it_f:
processBody(line)
这个方法可以用于任何可迭代的对象。
8
f = file("test")
processHeader(f.next()) #or next(f) for py3
for line in f:
processBody(line)
这个可以用。
补充:
把 .__next__
改成了 next
(它们其实是一样的,不过我觉得用 next 更简洁)。
关于 file
和 open
,我觉得 file
更清晰,所以我会继续偏好用 file
而不是 open
。
17
你可以这样做:
processHeader(f.readline())
for line in f:
processBody(line)