Python文件读取中f.seek的参数说明及“日志信息实时展示”的实例
file.seek()方法标准格式是:seek(offset,whence=0)
offset:开始的偏移量,也就是代表需要移动偏移的字节数
whence:给offset参数一个定义,表示要从哪个位置开始偏移;
0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。默认为0
一个相关的例子: 用yield生成器模拟Linux中命令:tail -f file | grep python 用于查找监控日志文件中出现有python字样的行
# 注意程序只检测新增的日志信息! #当程序运行时,若warn.log文件中末尾有新增一行,且该一行包含python,该行就会被打印出来 #若打开warn.log时,末尾已经有了一行包含python,该行不会被打印,因为上面是f.seek(0,2)移动到了文件EOF处 #故,上面程序实现了tail -f warn.log | grep 'python'的功能,动态实时检测warn.log中是否新增现了 #新的行,且该行包含python def tail(f): # 移动到文件的EOF最后 f.seek(0.2) while 1: # 读取文件中新的文本行 line = f.readline() if not line:continue # yield 出每一行的数据 yield line def grep(lines,search_text): for line in lines: if search_text in line: yield line if __name__ == '__main__': flog = tail(open('log.log')) py_lines = grep(flog,'python') for line in py_lines: print(line)