我有一个文件,我想一次得到每一行,但一旦它到达一个特定的行,我需要得到接下来的几行信息。
以下是代码示例:

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

当我回来第二次循环时,第一个print语句应该打印文件中的第五行。有什么可行的方法吗?
编辑:很抱歉没有澄清细节。rofile是我正在迭代的文件对象。我不知道在使用一个文件时,是否是真正的获取下一行的方法。我对Python中的文件操作没有太多经验。

最佳答案

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

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

正如注释中指出的那样,如果您的对象已经是迭代器,那么您不需要担心iter(这是file对象的情况)。但是,我把它放在这里,因为它适用于任意不可测的情况(例如lists)。

关于python - Python:对于带文件的循环,如何获取for循环中的下一行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13572062/

10-11 22:36
查看更多