Получить последнюю строку из файла

Есть файл с произвольным количеством строк, нужно получить последнюю строку этого файла, и записать её в новый файл.
Но я даже не смог получить последнюю строку. Нашел такое решение, но у меня и это не заработало.
1 2 3
with open("1.log", "r") as file: lines=file.readlines() print(lines[-1])
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Как получить последнюю строку из файла
Добрый день. Есть log-файл log.cgi.txt Из него необходимо получить последнюю строку, но ошибка.

Дан текстовый файл. Вставить в начало файла его последнюю строку, а в конец первую строку.
Помогите решить задание, заранее спасибо. Дан текстовый файл. Вставить в начало файла его.
Получить последнюю строку из текста
нужно получить последнюю строку из предложенного текста..Например: вася ходил гулять петя упал.

Как получить последнюю строку из textbox?
Нужно как то вытащить самую последнюю строку из textbox. Как это сделать?

Как получить последнюю строку консоли?
Как получить последнюю строку консоли?
Как прочитать файл построчно в Python
Существует много способов чтение из файла построчно в Python. Вы можете считать строки в список или обращаться к каждой из строк в цикле при помощи итератора или вызова функции объекта file.
В этом руководстве мы научимся считывать файл построчно, используя функции readline() , readlines() и объект файла на примерах различных программ.
Пример 1: Чтение файла построчно функцией readline()
В этом примере мы будем использовать функцию readline() для файлового объекта, получая каждую строку в цикле.
Как использовать функцию file.readline()
Следуйте пунктам приведенным ниже для того, чтобы считать файл построчно, используя функцию readline() .
- Открываем файл в режиме чтения. При этом возвращается дескриптор файла.
- Создаём бесконечный цикл while.
- В каждой итерации считываем строку файла при помощи readline() .
- Если строка не пустая, то выводим её и переходим к следующей. Вы можете проверить это, используя конструкцию if not . В противном случае файл больше не имеет строк и мы останавливаем цикл с помощью break .
# получим объект файла file1 = open("sample.txt", "r") while True: # считываем строку line = file1.readline() # прерываем цикл, если строка пустая if not line: break # выводим строку print(line.strip()) # закрываем файл file1.closeПривет! Добро пожаловать на PythonRu. Удачи в обучении!Пример 2: Чтение строк как список функцией readlines()
Функция readlines() возвращает все строки файла в виде списка. Мы можем пройтись по списку и получить доступ к каждой строке.
В следующей программе мы должны открыть текстовый файл и получить список всех его строк, используя функцию readlines() . После этого мы используем цикл for, чтобы обойти данный список.
# получим объект файла file1 = open("sample.txt", "r") # считываем все строки lines = file1.readlines() # итерация по строкам for line in lines: print(line.strip()) # закрываем файл file1.closeПривет! Добро пожаловать на PythonRu. Удачи в обучении!Пример 3: Считываем файл построчно из объекта File
В нашем первом примере, мы считываем каждую строку файла при помощи бесконечного цикла while и функции readline() . Но Вы можете использовать цикл for для файлового объекта, чтобы в каждой итерации цикла получать строку, пока не будет достигнут конец файла.
Ниже приводится программа, демонстрирующая применение оператора for-in, для того, чтобы перебрать строки файла.
Для демонстрации откроем файл с помощью with open. Это применимо и к предыдущим двум примерам.
Как прочитать последнюю строку и дописать данные
Имеются большие файлы от 5мб и выше, к примеру 1 файл содержит 114320 строк. Необходимо считать последнюю или предпоследнюю строку (если в последней был символ новой строки), и дописать новые данные. Видел разные реализации, но все они предполагают, что файл будет маленький.
Отслеживать
49.3k 17 17 золотых знаков 57 57 серебряных знаков 101 101 бронзовый знак
задан 28 авг 2017 в 3:06
961 1 1 золотой знак 10 10 серебряных знаков 28 28 бронзовых знаков
Связанный вопрос Get last n lines of a file with Python, similar to tail
28 авг 2017 в 3:455MB или 100K строк это относительно маленькие данные: начните с самого простого кода, который работает в вашем случае.
28 авг 2017 в 4:04
@jfs если использовать цикл который переходит по строкам то это занимает непростительно много времени, необходимо что-то побыстрее, есть такое? можно ли как-то с конца читать фаил? можно было бы наткнуться на символ переноса строки и понять что последнюю строку уже нашли
28 авг 2017 в 4:06
Попробуйте на ссылку нажать
28 авг 2017 в 4:091 ответ 1
Сортировка: Сброс на вариант по умолчанию
Чтобы прочитать последнюю строку в относительно небольшом файле:
from collections import deque with open('файл.txt') as file: [last_line] = deque(file, maxlen=1) or ['']Большой файл можно с конца читать пока новая строка не встретится, используя mmap :
from mmap import mmap, ACCESS_READ def last_line(filename, newline=b'\n'): with open(filename, 'rb', 0) as file: try: s = mmap(file.fileno(), 0, access=ACCESS_READ) except ValueError: # empty return b'' else: with s: i = s.rfind(newline, 0, -1) return s[i + len(newline) if i != -1 else 0:]Этот вариант возвращает байты и не поддерживает режим универсальных строк. Пример:
>>> last_line('no newline.txt') b'abc'Для чтения пары строк с конца, ещё может подойти, к примеру, tail(file, n) функция из @A. Coady ответа. Размер буфера в ответе удваивается по схожей причине, описанной в Непонятное замедление конкатенации в цикле — при чтении с конца нужно быть осторожным, чтобы не сделать ваш алгоритм квадратичным случайно:
def last_line(filename, newline=b'\n'): with open(filename, 'rb') as file: size, s = 2, b'' while s.find(newline, 0, -1) == -1: # until a full line is read try: file.seek(-size, os.SEEK_END) except IOError: # file is too small file.seek(0) # rewind to beginning break finally: s = file.read(size) size *= 2 i = s.rfind(newline, 0, -1) return s[i + len(newline) if i != -1 else 0:]Сравните производительность (включая deque() вариант), чтобы узнать какое решение лучше работает в вашем случае.
Как вывести последнюю строку из файла?
У меня есть файл "тест.txt" в нем есть 10 строк
Как сделать вывод последней строки?- Вопрос задан более трёх лет назад
- 7325 просмотров
Комментировать
Решения вопроса 1
f_read = open("тест.txt", "r") last_line = f_read.readlines()[-1] print(last_line)Ответ написан более трёх лет назад
Нравится 4 4 комментария
TheMergus @TheMergus Автор вопроса
Как удалить эту строку после вывода?

deepblack @deepblack Куратор тега Python
TheMergus, вы отметьте решением ответ. Потом задавайте новый вопрос.
TheMergus @TheMergus Автор вопроса
TheMergus, Имелось ввиду задать новый вопрос не в комментариях, а принципиально новый вопрос создать. Ну да ладно.
Удалить последнюю строчку можно, например, так:f = open("тест.txt", "r+") lines = f.readlines() lines = lines[:-1] f.seek(0) f.truncate() f.write("".join(lines))Ответы на вопрос 0
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- Python
Flet+python после публикации как статический сайт, не прогружается, в чем проблема?
- 1 подписчик
- 33 минуты назад
- 4 просмотра