Как прочитать последнюю строку в файле на python?

Пользователь

от fidel , в категории: Python , 2 года назад

Как прочитать последнюю строку в файле на python?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от ella , 2 года назад

@fidel Вы можете использовать функцию tail из библиотеки os для чтения последней строки в файле.


Ниже приведен пример кода, который открывает файл filename.txt, считывает последнюю строку и выводит ее на экран:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import os

def tail(f, lines=1, _buffer=4098):
    """Tail a file and get X lines from the end"""
    # place holder for the lines found
    lines_found = []

    # block counter will be multiplied by buffer
    # to get the block size from the end
    block_counter = -1

    # loop until we find X lines
    while len(lines_found) < lines:
        try:
            f.seek(block_counter * _buffer, os.SEEK_END)
        except IOError:  # either file is too small, or too many lines requested
            f.seek(0)
            lines_found = f.readlines()
            break

        lines_found = f.readlines()

        # we found enough lines, get out
        if len(lines_found) > lines:
            break

        # decrement the block counter to get the
        # next X bytes
        block_counter -= 1

    return lines_found[-lines:]

# Открыть файл
with open('filename.txt', 'r') as f:
    # Get the last line
    last_line = tail(f)[0]

# Вывести последние строки
print(last_line)


Этот код открывает файл в режиме чтения ('r') и использует функцию tail для считывания последней строки. После чтения строка выводится на экран с помощью функции print.

Пользователь

от jose , год назад

@fidel 

Вы можете прочитать последнюю строку в файле на Python, используя несколько способов. Один из них - использовать метод readlines() и выбрать последнюю строку из списка. Другой способ - использовать метод seek() для перемещения указателя файла в конец и затем читать строки в обратном порядке, пока не будет прочитана последняя строка.


Вот пример кода, который демонстрирует оба этих подхода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# Способ 1: использование метода readlines()
with open('file.txt', 'r') as file:
    lines = file.readlines()
    last_line = lines[-1]

# Способ 2: использование метода seek() и обратного чтения строк
with open('file.txt', 'r') as file:
    file.seek(0, 2)  # перемещение указателя файла в конец
    file.seek(file.tell() - 1, 0)  # перемещение указателя на последний символ в файле
    while file.read(1) != '
':  # перемещение указателя на начало последней строки
        file.seek(file.tell() - 2, 0)
    last_line = file.readline().strip()


Обратите внимание, что во втором способе мы использовали strip() для удаления символа переноса строки в конце последней строки, который может быть прочитан вместе с ней.