Jeśli plik mieści się w pamięci, można spróbować czegoś takiego:
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 '-------'
Powyższy kod zasadzie czyta wszystkie linie i wykorzystuje zip
stworzyć listę krotek zawierający bieżącą linię i następny jeden.
Edit: Alternatywnie, dla długich plików, można użyć itertools
bibliotekę następująco:
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 '-------'
w tym przypadku:
itertools.tee
jest używany do utworzenia dwóch indenpendent iteratory (jeden dla prądu line i jeden dla następnej linii), które używają oryginalnego iteratora pliku.
itertools.slice
służy do uruchamiania następnego iteratora linii w drugim wierszu.
itertools.izip
służy do łączenia wyników obu iteratorów wiersz po wierszu w krotce.
Edit 2: Jak sugeruje @eyquem, można również otworzyć plik dwukrotnie:
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 '-------'
Czy mogę w jakiś sposób sprawdzić, czy istnieje kolejna linia, zanim spróbuję ją przeczytać? –
Co masz na myśli mówiąc "umieść w aktualnej linii" ??? Chcesz zmodyfikować zapisaną linię na twardym dysku z danymi obecnymi na linii? – eyquem