获取文件中的下一行

ove*_*ing 17 python file-io file

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

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

file = open(input,"r").read()
for line in file.splitlines():
  line = doSomething()
Run Code Online (Sandbox Code Playgroud)

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

谢谢

Mar*_*ers 33

只需循环打开文件:

infile = open(input,"r")
for line in infile:
    line = doSomething(line, next(infile))
Run Code Online (Sandbox Code Playgroud)

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

两个额外提示:

  1. 不要打电话给你的变量file; 它掩盖了filepython中的内置类型对象.我infile改为命名了.

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

    with open(input,"r") as infile:
        for line in infile:
            line = doSomething(line, next(infile))
    
    Run Code Online (Sandbox Code Playgroud)


Jor*_*ley 8

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

  • 为什么-1?...这确实被问到了...... Martjin的回答得到了更好的批准但是这给了你下一行(至少现在它确实......缺少read())... (4认同)

Bos*_*ohn 8

我想你的意思是,如果你在第n行,你希望能够访问第n + 1行.

最简单的方法是更换

for line in file.splitlines():

lines = file.readlines()
for i in xrange(len(lines)):
Run Code Online (Sandbox Code Playgroud)

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

更加pythonic的方式是使用枚举

lines = file.readlines()
for index, line in enumerate(lines):
Run Code Online (Sandbox Code Playgroud)

现在你在"line"中有正常的当前行,但如果你想找到一个相对于它的不同行,你也有索引.