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)