我試圖獲取以下代碼來觀察文件夾的更改並返回文件名(最好是完整路徑)作爲字符串一旦檢查到文件大小最近沒有增加,以阻止我的腳本的其餘部分檢查不完整的文件。 我很難發送我的文件大小定時器功能的文件名,因爲我收集檢測到的文件列表。 如果我吠叫錯了樹,請隨時告訴我,並感謝您的幫助!Python Watch文件夾 - 文件大小的詢問列表
斯圖爾特
import os, time
def watch(path_to_watch):
before = dict ([(f, None) for f in os.listdir (path_to_watch)])
while watch_active == 1:
time.sleep (10)
after = dict ([(f, None) for f in os.listdir (path_to_watch)])
added = [f for f in after if not f in before]
removed = [f for f in before if not f in after]
if added:
filesizechecker(added)
return added
if removed:
print "Removed: ", ", ".join (removed)
before = after
def filesizechecker(filepath):
# Checks filesize of input file and
# returns 1 when file hasn't changed for 3 seconds
fnow = open(filepath, "rb")
fthen = 1
while fnow != fthen:
time.sleep(3)
fthen = len(f.read())
watch_active = 1
watch("/home/stewart/Documents")
您確定這是測試文件不是「正在進行」的最佳方法嗎?例如,你可以在臨時目錄中處理不完整的文件,然後將'os.rename'(這是原子的)處理到主目錄中。 – katrielalex 2010-08-03 14:34:16
哦,你應該使用'set'而不是'dict';一方面,這是做事的正確方式 - 但不僅如此,你可以在'之前加'=!因此,例如'before = set(os.listdir(...))'。 – katrielalex 2010-08-03 14:36:25