Не думаю, что вы рассказали нам всю историю. line.split()
даст тот же результат независимо от того, завершится ли последняя строка \n
или нет.
Обратите внимание, что последняя строка в файле, оканчивающаяся на \n
, - это ОБЫЧНОЕ поведение, и людям иногда мешает строка, которая не так оканчивается.
Если бы вы сделали что-то вроде:
print repr(line), repr(ref)
вместо
print ref[0], ref[1]
Вы сможете точно определить, что происходит, вместо того, чтобы угадывать нас.
Если, как предполагает @Mark Byers, ваша последняя строка пуста или состоит только из пробелов, вы можете игнорировать эту строку (и все другие подобные строки) с помощью этого несколько более простого кода:
for line in r: # readlines is passe
ref = line.split() # split() ignores trailing whitespace
if ref:
print ref[0], ref[1]
Также учтите, что в вашей последней строке может быть только одно поле, а не 0 или 2.