Python是一種非常強(qiáng)大的腳本語(yǔ)言,它有很多應(yīng)用領(lǐng)域,其中包括監(jiān)聽(tīng)文件修改。在很多時(shí)候,我們需要實(shí)時(shí)獲取某個(gè)文件的變化情況,例如修改、刪除、重命名等操作。Python提供了一種簡(jiǎn)單有效的方法去監(jiān)聽(tīng)文件的變化。
import os
import time
#定義監(jiān)聽(tīng)函數(shù)
def monitor_file(filename):
last_modify_time = os.stat(filename).st_mtime
while True:
current_modify_time = os.stat(filename).st_mtime
if current_modify_time != last_modify_time:
print(f"{filename}文件已經(jīng)被修改")
last_modify_time = current_modify_time
time.sleep(1) #避免CPU占用率過(guò)高
#測(cè)試代碼
if __name__ == '__main__':
filepath = "test.txt"
monitor_file(filepath)
上面的代碼是一個(gè)非常簡(jiǎn)單的文件監(jiān)聽(tīng)器。首先,我們需要導(dǎo)入os和time模塊。接著,我們定義了一個(gè)monitor_file函數(shù),這個(gè)函數(shù)可以監(jiān)聽(tīng)指定文件的變化情況。
monitor_file函數(shù)的實(shí)現(xiàn)非常簡(jiǎn)單,它使用了os模塊的stat函數(shù)去獲取指定文件的上一次修改時(shí)間。然后,我們對(duì)指定文件進(jìn)行無(wú)限循環(huán)監(jiān)控,每隔一秒鐘獲取一次文件的當(dāng)前修改時(shí)間。如果當(dāng)前修改時(shí)間和上一次修改時(shí)間不同,那么就說(shuō)明文件被修改了。
在測(cè)試代碼中,我們給出了一個(gè)測(cè)試文件test.txt。在運(yùn)行代碼之前,需要先創(chuàng)建這個(gè)文件,并在文件中輸入一些內(nèi)容。然后,我們調(diào)用monitor_file函數(shù),傳入test.txt作為參數(shù),程序會(huì)一直運(yùn)行,直到test.txt文件被修改。
總之,Python提供了一種簡(jiǎn)單高效的方法去監(jiān)聽(tīng)文件的變化,我們只需要用很少的代碼就可以實(shí)現(xiàn)這個(gè)功能。如果你需要在某個(gè)項(xiàng)目中實(shí)現(xiàn)文件自動(dòng)監(jiān)控的功能,那么這個(gè)方法一定會(huì)非常有用。