Как прочитать из файла только последние 30 строк?
Вопрос лаконичный, нужен аналогичный ответ 🙂
Задача — получить статистику из 100500 лог-файлов, размером по 1-30 Мб.
Для ускорения процесса, считаю целесообразным читать только 30 последних строк в файле, которые содержат всю необходимую мне информацию.
Как это сделать на Python?
import os r = os.system("tail -n 30 /path/error.log") print(r)
Да да. ведь Python это не что иное как вычурный способ запускать бородатые утилиты в баш..
seek() ? не не слышал. а вообще, лучше через python сохранить текстовый файл с си кодом, а потом через python запустить компилятор. ой постойте..
Получить размер файла.
Открыть файл.
Зная размер файла сделать seek в конец.
Считывать файл посимвольно с конца до 30-ти переводов строк.
Для этого есть готовая команда tail tail -n 30 mylog.log
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())
Первой строчкой вы открываете файл целиком, или я ошибаюсь? Взять из уже открытого файла последние строки — не проблема. Вопрос был в другом.
Igor Nikolaev: и как же вы собираетесь что то взять из закрытого файла?
Пока его не откроешь, это всего лишь намагниченные участки на блине HDD.
Если найдете способ получить чтото из файла, не открывая его, получите Нобелевскую премию.)))
У вас видимо серьезные пробелы в базовых знаниях.
Когда мы «открываем» файл, мы получаем к нему доступ, и работаем с ним через его хэндл.
Igor Nikolaev: вот ТУТ:
stackoverflow.com/questions/136168/get-last-n-line.
люди мучали самое быстрое считывание последних строк.
Можете поэкспериментировать. Библиотеки питона это скомпилированный быстрый код на С, при работе с файлами уж точно. И вряд ли вы напишите что-то эффективней разработчиков.
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. Как это сделать?
Как получить последнюю строку консоли?
Как получить последнюю строку консоли?