在文件被写入时从文件流式传输文本

2024-04-25 09:39:21 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有更好更干净的方法来实时地从文本文件中提取数据流?你知道吗

目前,我正在使用服务器模拟连续写入的数据,并使用seek()方法只读取最近添加的数据并将其打印到屏幕上。你知道吗

我遇到的问题是测试文件是否被写入,如果没有,然后睡眠一小段时间,然后测试它是否被写入 生成并输出打印到屏幕上。你知道吗

import time
seek1 = 198707
seek2 = 198719
file_open = open('C:\Users\Jay\Desktop\Tools\Uni-    Server\UniServerZ\core\\apache2\logs\\access.log')
#C:\Users\Jay\Desktop\Tools\Uni-Server\UniServerZ\core\apache2\logs
#C:\Users\Jay\PycharmProjects\Parsly\\access.log

def generate_list(read_lines):#properly build this with seek positional checks.
    #file_object.seek(seek_position)
    #lines = file_object.readlines()
    for i in read_lines:
        yield i


def seek_new_postion(generator):
    listt = []
    seek = file_open.tell()
    old_seek = None
    counter = 0
    while 1:
        if old_seek == seek and not counter == 5:
            print "sleeping"
            time.sleep(1)
            counter +=1
        else:
            p = generate_list(file_open.readlines())
            for i in p:
                print i
            time.sleep(1)
            print "___________________________"
            print "start seek: %s" % file_open.tell()
            print "old seek: %s" % old_seek
            print "___________________________"
            old_seek = seek
            seek = file_open.tell()
            counter = 0

print file_open.tell()
for i in seek_new_postion("test"):
print i

Tags: 数据方法infortimecounterseekopen