如何在Python中以不同方式处理文件的第一行?

9 python iteration file

我经常需要在第一行处理包含标题的大文本文件.标题通常与文件正文的处理方式不同,或者我对正文的处理依赖于标题.无论哪种方式,我需要将第一行视为特殊情况.我可以使用简单的行迭代并设置一个标志:

headerProcessed = false
for line in f:
    if headerProcessed:
        processBody(line)
    else:
        processHeader(line)
        headerProcessed = true
Run Code Online (Sandbox Code Playgroud)

但我不喜欢循环中的测试,除了执行数百万次之外,所有测试都是多余的.有没有更好的办法?我可以区别对待第一行,然后在第二行开始迭代吗?我应该被打扰吗?

Gre*_*ill 16

你可以:

processHeader(f.readline())
for line in f:
    processBody(line)
Run Code Online (Sandbox Code Playgroud)

  • 谢谢格雷格.这正是我期望能够做到的但却以某种方式假设文件位置将在for循环开始时重置.学到的Python课程:期待简单的方法! (4认同)
  • 另一个要吸取的教训:测试你的假设.你本来可以试一试并发现,但是我们都不会从这个有趣的交流中获益! (4认同)

Dav*_*d X 8

f = file("test")
processHeader(f.next()) #or next(f) for py3
for line in f:
    processBody(line)
Run Code Online (Sandbox Code Playgroud)

这有效.

编辑:

.__next__next(他们等价的,但我想下一个更简洁).

回归filevs open,file对我来说似乎更清楚,因此我会继续喜欢它open.

  • 对于Python 3,你说`next(f)` (2认同)