Когда вы используете seek (), python получает возможность использовать смещение указателя для перехода к нужной позиции в файле. Но чтобы узнать текущий номер строки, вам нужно проверить каждый символ до этой позиции. Так что вы можете также отказаться от seek () в пользу read ():
Заменить
f = open(filename, "r")
f.seek(55)
с
f = open(filename, "r")
line=f.read(55).count('\n')+1
print(line)
Возможно, вы не хотите использовать f.read (num), поскольку для этого может потребоваться много памяти, если num очень велико. В этом случае вы можете использовать генератор, подобный этому:
import itertools
import operator
line_number=reduce(operator.add,( f.read(1)=='\n' for _ in itertools.repeat(None,num)))
pos=f.tell()
Это эквивалентно f.seek(num)
с дополнительным преимуществом: line_number
.