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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM