Получение следующей строки в файле
Я читаю в файле и задаюсь вопросом, есть ли способ прочитать следующую строку в цикле 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
чтобы получить дополнительную строку.
Два дополнительных совета:
-
Не называйте ваш переменный file
; он маскирует встроенный объект типа file
в python. Я назвал это infile
вместо этого.
-
Вы можете использовать открытый файл в качестве менеджера контекста с оператором 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):
теперь у вас есть текущая строка в строке, как обычно, но у вас также есть индекс, если вы хотите найти другую строку относительно него.