我正试图找到一种使用python实时读取日志文件的好方法

时间:2017-03-17 06:01:46

标签: python file file-io io

当我在该文件中找到特定字符串时,我想停止阅读。我该怎么办呢。

os.chdir('/root/.jenkins/jobs/pip2/builds/47')
fo = open('log','w+')

2 个答案:

答案 0 :(得分:1)

您可以打开文件并使用for循环逐行阅读:

with open('file') as f:
    for line in f:
        #read this line
        if 'special string' in line:
            break

以上代码一次只读取一行。当读取下一行时,前一行将被垃圾收集。

答案 1 :(得分:0)

您可以使用Python的takewhile()函数读取所有行,直到它与您的特定字符串匹配,如下所示:

import itertools

specific_string = 'line 5'

with open('input.txt') as f_input:
    for line in itertools.takewhile(lambda x: x.strip() != specific_string, f_input):
        print line,

如果input.txt包含:

line 1
line 2
line 3
line 4
line 5
line 6
line 7            

您将获得以下输出:

line 1
line 2
line 3
line 4

或者为了相反的效果,要查看特定字符串后的所有行,您可以使用dropwhile(),如下所示:

import itertools

specific_string = 'line 5'

with open('input.txt') as f_input:
    for line in itertools.dropwhile(lambda x: x.strip() != specific_string, f_input):
        print line,

给你:

line 5
line 6
line 7