搜索文件的最后X行的最有效方法?

发布于 2021-01-29 16:22:23

我有一个文件,但我不知道它会有多大(可能会很大,但是大小会相差很大)。我想搜索最后10行左右,以查看它们是否与字符串匹配。我需要尽快高效地执行此操作,并且想知道是否还有什么比以下更好的:

s = "foo"
last_bit = fileObj.readlines()[-10:]
for line in last_bit:
    if line == s:
        print "FOUND"
关注者
0
被浏览
145
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。
    # 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 + "\n"
    print find_str + "\n" in lines
    
    # If you're searching for a substring
    for line in lines:
        if find_str in line:
            print True
            break
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看