【问题标题】:Python regex get match and wait until new matchPython 正则表达式获取匹配并等到新匹配
【发布时间】:2021-08-15 05:01:01
【问题描述】:

基本上它是一个更新日志文件,所以当我的函数找到下一个/最新匹配时,它会执行另一个函数 但我不希望它不断循环,只有在找到最新更新时才工作

有没有办法可以暂停/等待它,直到文件更新并获得新匹配

try:
    with open(location, "r") as f:
        for lines in f.readlines():
            for match in re.findall(pattern, lines):
                matches.append(match)
                print(match)
                time.sleep(5)
except Exception:
    pass

【问题讨论】:

    标签: python regex io


    【解决方案1】:

    open() 创建一个类似文件的对象,可以使用readline() 对其进行迭代。如果您创建一个无限循环,您将不断读取其他程序附加到文件的任何新行。

    with open(location, "r") as f:
        while True:
            line = f.readline()
            if line: #checks not None
                for match in re.findall(pattern, line)
                matches.append()
                do_work(matches) # call some other function that processes the matches that you have found
    
    

    【讨论】:

    • 谢谢,这工作!但是我怎样才能做到这一点,它可以在找到新匹配时执行脚本?
    • 您能进一步解释一下吗?这是一个无限循环,所以它永远不应该退出。任何新的比赛都会不断地添加到您的比赛列表中。如果您需要对匹配列表做一些事情,您需要从循环中调用它或实现一些非阻塞异步代码。我的代码和您的代码之间的区别在于,这只会在添加换行符时准备好换行符,而您的代码将从文件开头开始并再次读取所有内容。
    • 啊,别担心,我确实设法让代码完全按照我的意愿工作:D,所以我没有其他问题了。
    • 如果这回答了您的问题,请将其标记为已回答并点赞。这样,当其他人提出类似的问题时,他们应该已经回答了。很高兴你把它整理好了。
    猜你喜欢
    • 2016-07-01
    • 2013-09-22
    • 1970-01-01
    • 2012-08-07
    • 2022-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    相关资源
    最近更新 更多