18

我正在读一个文件,想知道是否有办法在 for 循环中读取下一行?

我目前正在阅读这样的文件:

file = open(input,"r").read()
for line in file.splitlines():
  line = doSomething()

那么无论如何我可以在那个for循环中检索文件的下一行,以便我可以在doSomething()函数中执行一些操作吗?

4

3 回答 3

36

只需循环打开文件:

infile = open(input,"r")
for line in infile:
    line = doSomething(line, next(infile))

因为您现在将文件用作迭代器,所以您可以随时调用变量上的函数next()infile检索额外的行。

两个额外的提示:

  1. 不要调用你的变量file;它掩盖了python中的内置file类型对象。infile我改为命名它。

  2. 您可以将打开的文件用作with语句的上下文管理器。完成后它会自动为您关闭文件:

    with open(input,"r") as infile:
        for line in infile:
            line = doSomething(line, next(infile))
    
于 2012-09-28T20:32:04.320 回答
8
file = open(input,"r").read()
lines =  file.read().splitlines()
for i in range(len(lines)):
     line = lines[i]
     next_line = lines[i+1]
于 2012-09-28T20:33:42.137 回答
8

我认为您的意思是,如果您在第 n 行,您希望能够访问第 n+1 行。

最简单的方法是更换

for line in file.splitlines():

lines = file.readlines()
for i in xrange(len(lines)):

然后你可以得到当前行 lines[i] 和下一行 lines[i+1]

更pythonic的方法是使用枚举

lines = file.readlines()
for index, line in enumerate(lines):

现在您像正常一样在“行”中拥有当前行,但如果您想找到与其相关的不同行,您也拥有索引。

于 2012-09-28T20:40:41.167 回答