获取文件中的下一行

时间:2012-09-28 20:30:36

标签: python file-io

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

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

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

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

由于

3 个答案:

答案 0 :(得分:33)

只需遍历打开的文件:

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

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

另外两个提示:

  1. 请勿调用变量file;它掩盖了python中的内置file类型对象。我将其命名为infile

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

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

答案 1 :(得分: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):

现在你的“line”中的当前行与普通行一样,但如果你想找到一个相对于它的不同行,你也有索引。

答案 2 :(得分:7)

file = open(input,"r").read()
lines =  file.read().splitlines()
for i in range(len(lines)):
     line = lines[i]
     next_line = lines[i+1]