2015-01-20 171 views
0

我正在試圖創建一個框,告訴我文件文本是否被修改,如果被修改,它將打印出新的文本。這應該是在一個無限循環(殭屍睡覺,直到文本文件被修改)。檢查一個文件是否在Python中被修改

我試過這段代碼,但它不起作用。

while True: 
    tfile1 = open("most_recent_follower.txt", "r") 
    SMRF1 = tfile1.readline() 
    if tfile1.readline() == SMRF1: 
     print(tfile1.readline()) 

但是,這是完全不工作......我是新來的Python,任何人都可以幫助我嗎?

+0

通過「修改」你的意思是增加了新的線? – heemayl 2015-01-21 00:01:45

回答

0
def read_file(): 
    with open("most_recent_follower.txt", "r") as f: 
     SMRF1 = f.readlines() 
    return SMRF1 

initial = read_file() 
while True: 
    current = read_file() 
    if initial != current: 
     for line in current: 
      if line not in initial: 
       print(line) 
     initial = current 

在一次讀取文件,以獲得它的初始狀態。然後不斷重複閱讀文件。當它改變時,打印出它的內容。

我不知道你指的是什麼機器人,但是這個代碼和你的代碼將不斷地讀取這個文件。它似乎永遠不會退出。

+0

如果文件被修改,OP只需要輸入新的內容,而不是整個文件內容。 – heemayl 2015-01-21 00:07:09

+0

你怎麼看? – jgritty 2015-01-21 00:08:17

+0

我剛剛試過你的代碼,問題是它永遠保持printint「current」,我該如何解決這個問題? – 2015-01-21 00:12:44

0

我可能會建議將文件複製到安全的重複位置,並可能使用diff程序來確定當前文件是否與原始副本不同,並打印添加的行。如果你只是想追加線,你可以嘗試使用像tail

你也可以使用一個圖書館一樣pyinotify中只觸發一個實用工具,當文件系統檢測到該文件已被修改

+0

感謝您的回覆,但我嘗試了jgritty代碼,它可以正常工作!無論如何,謝謝:) – 2015-01-21 00:41:03

+0

不要忘記接受他的答案! :) – ThorSummoner 2015-01-21 00:42:29

相關問題