Python:对于包含文件的循环,如何获取forloop中的下一行?

Rob*_* IV 13 python for-loop file

我有一个文件,我想一次获得每一行,但一旦它到达一个特定的行,我需要获得接下来的几行信息.

这是一个代码示例:

rofile = open('foo.txt', 'r')
for line in rofile:
    print line
    if(line.strip() == 'foo'):
        line = line.next()
        print line
        line = line.next()
        print line
        line = line.next()
        print line
Run Code Online (Sandbox Code Playgroud)

当我第二次回来并循环时,第一个print语句应该打印文件中的第5行.有没有办法做到这一点?

编辑:很抱歉没有澄清细节.rofile是我正在迭代的文件对象.next()使用文件时是否是获取下一行的真正方法,我不知道.我对python中的文件操作没有多少经验.

mgi*_*son 12

您可以使用iter将对象转换为支持的iterable next.

irofile = iter(rofile)
for line in irofile:
    print line
    if(line == 'foo'):
        line = next(irofile)  #BEWARE, This could raise StopIteration!
        print line
Run Code Online (Sandbox Code Playgroud)

正如评论中所指出的,如果你的对象已经是一个迭代器,那么你不必担心iter(这是file对象的情况).但是,我将它留在这里,因为它适用于任意迭代(例如lists)的情况.

  • 我认为文件对象本身就是一个迭代器,所以不使用`iter()`. (5认同)