Если ваш файл помещается в память, вы можете попробовать что-то вроде этого:
f = open('somefile.txt')
lines = f.read().splitlines()
for current_line, next_line in zip(lines, lines[1:]):
print current_line
print next_line
print '-------'
Приведенный выше код в основном читает все строки и использует zip
для создания списка кортежей, который содержит текущую строкуи следующий.
Редактировать: В качестве альтернативы для длинных файлов вы можете использовать библиотеку itertools
следующим образом:
import itertools
f = open('somefile.txt')
i1, i2 = itertools.tee(f)
lines = itertools.izip(i1, itertools.islice(i2, 1, None))
for current_line, next_line in lines:
print current_line
print next_line
print '-------'
В этом случае:
itertools.tee
используется для создания двух независимых итераторов (один для текущей строки и один для следующей строки), которые используют исходный файловый итератор. itertools.slice
используется для запускаитератор следующей строки во второй строке. itertools.izip
используется для построчного объединения результатов обоих итераторов в кортеж.
Редактировать 2: в соответствии с предложением @eyquem, вы также можете открыть файл дважды:
import itertools
f = open('somefile.txt')
g = open('somefile.txt')
lines = itertools.izip(f, itertools.islice(g, 1, None))
for current_line, next_line in lines:
print current_line
print next_line
print '-------'