【问题标题】:I'm trying to find a nice way to read a log file in real time using python我正在尝试找到一种使用python实时读取日志文件的好方法
【发布时间】:2017-08-08 14:01:01
【问题描述】:

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

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

【问题讨论】:

  • 日志文件是否在您阅读时被写入?
  • 是的,它是@Scovetta

标签: python file file-io io


【解决方案1】:

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

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

上面的代码一次只读取一行。当读取下一行时,上一行将被垃圾回收。

【讨论】:

    【解决方案2】:

    您可以使用 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
    

    【讨论】:

      猜你喜欢
      • 2020-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-06
      • 2011-08-03
      • 2014-03-02
      • 1970-01-01
      相关资源
      最近更新 更多