Python中tail -f如何实现

2025-12-02 0 83,449

说明

1、tail-f默认先读取最后10行数据,然后从文件末尾读取实时数据。

如果是小文件,可以先读取所有文件内容,输出最后10行。

2、读取全文后获取最后10行的性能并不高,后滚10行的边界条件也很复杂。先获取全文,再得到最后10行的实现。

实例

import time
import sys
 
from typing import Callable, NoReturn
 
 
class Tail(object):
    def __init__(
            self,
            file_name: str,
            output: Callable[[str], NoReturn] = sys.stdout.write,
            interval: int = 1
    ):
        self.file_name: str = file_name
        self.output: Callable[[str], NoReturn] = output
        self.interval: int = interval
 
    def __call__(self):
        with open(self.file_name) as f:
            self.read_last_line(f)
            while True:
                line: str = f.readline()
                if line:
                    self.output(line)  # 使用print都会每次都打印新的一行
                else:
                    time.sleep(self.interval)
 
    def read_last_line(self, f):
        last_lines = f.readlines()[-10:]
        for line in last_lines:
            self.output(line)
 
if __name__ == '__main__':
    filename: str = sys.argv[0]
    Tail(filename)()

以上就是Python中tail -f的实现,希望对大家有所帮助。更多Python高级指路:python高级

本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:以上部本文内容由互联网用户自发贡献,本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。投诉邮箱:3758217903@qq.com

ZhiUp资源网 python高级 Python中tail -f如何实现 https://www.zhiup.top/6024.html

相关