LINUX.ORG.RU

python, чтение из файла


0

0

как максимально Ъ прочитать из текстового файла последнюю строку?

пока сделал так, но не очень нравится

fl = open("blablabla.txt", "r")
for line in fl.xreadlines():
    pass

Ответ на: комментарий от cathode

спасиб, в моем случае это подойдет, но как я понимаю readlines читает весь файл в память, не скопытиться ли питон на файлике мегов так в 300, в условиях небольшого объема оперативки?

CFA
() автор топика
Ответ на: комментарий от CFA

По-моему, первый вариант более правильный - readlines не рекомендуется использовать, ему на смену пришёл xreadlines.

Laz ★★★★★
()
Ответ на: комментарий от CFA

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

anonymous
()
Ответ на: комментарий от CFA

Ну если файл большой, то тогда его надо с конца посимвольно забирать пока не попадется \n. Потом считанное реверснуть, иначе имхо никак.

cathode
()

для большого файла верно. но для маленького:

last_line = None

for line in open("blablabla.txt", "r"):
    last_line = line

print last_line

smartly ★★★
()

Читаю из сквидовского аксесс лога последнюю строчку так:

blk_size = 4096
fp = open('blablabla.txt', 'rb')
fp.seek(-blk_size, 2)
raw_data = fp.read()
fp.close()
last_line = raw_data.split('\n')[-2]

spiro ★★
()
Ответ на: комментарий от vsemnazlo

благодарствую за исчерпывающие ответы)

CFA
() автор топика

import fileinput
............
for line in fileinput.input ('.bashrc'):
    lastline = line
print line

Joe_Bishop
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.