我的代碼應該得到最後修改後的文件並在屏幕上打印,直到它保持運行,直到一個新文件被修改並將其打印到屏幕上,但我肯定會得到一個typeError。 TypeError:強制爲Unicode:需要字符串或緩衝區,找到int。在目錄中迭代低谷文件
import os, sys, re, time
from datetime import date, timedelta, datetime
from time import localtime
files = os.listdir('dir_path')
files = [f for f in files if re.search('.csv', f, re.I)]
files.sort
d = datetime.now() - timedelta(days = 30)
d = d.timetuple()
oldfiles = 0
newfiles = 0
for file in files:
filetimesecs = os.path.getmtime('dir_path' + file)
filetime = localtime(filetimesecs)
if filetime < d:
oldfiles += 1
if filetime > d:
newfiles += open(files, 'r')
for k in newfiles:
sys.stderr.write(k)
while True:
time.sleep(2)
print"new: %s" % newfiles
您的縮進可能是錯誤的。你能糾正它嗎? – 2012-03-07 17:44:19
當我刪除newfiles + =打開(文件,'r') 在新文件中的k: sys.stderr.write(k)並把新文件+ = 1它打印底部的打印聲明 – mintgreen 2012-03-07 17:50:58
我認爲@SvenMarnach指的是「if」塊的縮進。他們看起來應該是在「for」循環中。此外,你擁有的邏輯不會完全符合你的描述。它將循環所有文件一次,然後停止。爲了讓我們更容易,錯誤會引發什麼?最後,我認爲你的意思是'dir_path'是一個參數,而不是字符串文字。 – 2012-03-07 17:57:00