Получение следующей строки в файле

Я читаю в файле и задаюсь вопросом, есть ли способ прочитать следующую строку в цикле for?

В настоящее время я читаю файл, как это:

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

Так можно ли в любом случае получить следующую строку файла в цикле for, чтобы я мог выполнить какую-то операцию в функции doSomething()?

Ответы

Ответ 1

Просто зациклите на открытом файле:

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

Поскольку теперь вы используете файл в качестве итератора, вы можете в любое время вызвать функцию next() для переменной infile чтобы получить дополнительную строку.

Два дополнительных совета:

  1. Не называйте ваш переменный file; он маскирует встроенный объект типа file в python. Я назвал это infile вместо этого.

  2. Вы можете использовать открытый файл в качестве менеджера контекста с оператором with. Он автоматически закроет файл для вас:

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

Ответ 2

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

Ответ 3

Я думаю, что вы имеете в виду, что если вы находитесь в строке 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):

теперь у вас есть текущая строка в строке, как обычно, но у вас также есть индекс, если вы хотите найти другую строку относительно него.