Python показать последние строки

Как прочитать из файла только последние 30 строк?

Вопрос лаконичный, нужен аналогичный ответ 🙂
Задача — получить статистику из 100500 лог-файлов, размером по 1-30 Мб.
Для ускорения процесса, считаю целесообразным читать только 30 последних строк в файле, которые содержат всю необходимую мне информацию.
Как это сделать на Python?

STLEON

import os r = os.system("tail -n 30 /path/error.log") print(r)

Kademn

Да да. ведь Python это не что иное как вычурный способ запускать бородатые утилиты в баш..
seek() ? не не слышал. а вообще, лучше через python сохранить текстовый файл с си кодом, а потом через python запустить компилятор. ой постойте..

STLEON

Kademn

Получить размер файла.
Открыть файл.
Зная размер файла сделать seek в конец.
Считывать файл посимвольно с конца до 30-ти переводов строк.

Для этого есть готовая команда tail tail -n 30 mylog.log

nightvich

sim3x

from collections import deque with open(file_name) as f: print(list(deque(f, 30)))
with open(file_name) as f: for row in deque(f, 30): print (row.strip())

nightvich

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

Igor Nikolaev: и как же вы собираетесь что то взять из закрытого файла?
Пока его не откроешь, это всего лишь намагниченные участки на блине HDD.
Если найдете способ получить чтото из файла, не открывая его, получите Нобелевскую премию.)))
У вас видимо серьезные пробелы в базовых знаниях.
Когда мы «открываем» файл, мы получаем к нему доступ, и работаем с ним через его хэндл.

nightvich

Igor Nikolaev: вот ТУТ:
stackoverflow.com/questions/136168/get-last-n-line.
люди мучали самое быстрое считывание последних строк.
Можете поэкспериментировать. Библиотеки питона это скомпилированный быстрый код на С, при работе с файлами уж точно. И вряд ли вы напишите что-то эффективней разработчиков.

nightvich

andrey_ado: Так я не пытаюсь 🙂 Я ставил конкретный вопрос — как решить мою задачу. Я совсем новичок и только учусь. Спасибо за ссылку.

Igor Nikolaev: я тоже не профи, и на питоне пишу недавно. В знаниях вперед нас двигают задачи, вопросы и ответы. Удачи.

Источник

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

 @ 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 .

Источник

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

Есть файл с произвольным количеством строк, нужно получить последнюю строку этого файла, и записать её в новый файл.
Но я даже не смог получить последнюю строку. Нашел такое решение, но у меня и это не заработало.

with open("1.log", "r") as file: lines=file.readlines() print(lines[-1])

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

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

Получить последнюю строку из текста
нужно получить последнюю строку из предложенного текста..Например: вася ходил гулять петя упал.

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

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

Источник

Читайте также:  Javax servlet servletexception java lang nullpointerexception
Оцените статью