搜索文件最后 X 行的最有效方法? [英] Most efficient way to search the last X lines of a file?
本文介绍了搜索文件最后 X 行的最有效方法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个文件,但我不知道它有多大(它可能很大,但大小会有很大差异).我想搜索最后 10 行左右,看看它们是否与字符串匹配.我需要尽可能快速有效地执行此操作,并且想知道是否有比以下更好的方法:
I have a file and I don't know how big it's going to be (it could be quite large, but the size will vary greatly). I want to search the last 10 lines or so to see if any of them match a string. I need to do this as quickly and efficiently as possible and was wondering if there's anything better than:
s = "foo"
last_bit = fileObj.readlines()[-10:]
for line in last_bit:
if line == s:
print "FOUND"
推荐答案
# Tail
from __future__ import with_statement
find_str = "FIREFOX" # String to find
fname = "g:/autoIt/ActiveWin.log_2" # File to check
with open(fname, "r") as f:
f.seek (0, 2) # Seek @ EOF
fsize = f.tell() # Get Size
f.seek (max (fsize-1024, 0), 0) # Set pos @ last n chars
lines = f.readlines() # Read to end
lines = lines[-10:] # Get last 10 lines
# This returns True if any line is exactly find_str + "
"
print find_str + "
" in lines
# If you're searching for a substring
for line in lines:
if find_str in line:
print True
break
这篇关于搜索文件最后 X 行的最有效方法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文