我正在阅读一个文件并想知道是否有办法在for循环中读取下一行?
我目前正在阅读这样的文件:
file = open(input,"r").read()
for line in file.splitlines():
line = doSomething()
那么无论如何我可以在for循环中检索文件的下一行,以便我可以在doSomething()
函数中执行某些操作吗?
由于
答案 0 :(得分:33)
只需遍历打开的文件:
infile = open(input,"r")
for line in infile:
line = doSomething(line, next(infile))
因为您现在使用该文件作为迭代器,所以您可以随时调用infile
变量上的next()
function来检索额外的行。
另外两个提示:
请勿调用变量file
;它掩盖了python中的内置file
类型对象。我将其命名为infile
。
您可以使用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]