新しいファイルが変更されて画面に出力されるまで、実行中に最後に変更されたファイルを取得して印刷することになっていました。 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
あなたのインデントが間違っている可能性があります。それを修正してください。 –
いいえnewfiles + = open(ファイル、 'r')を削除する場合 k:newfiles: sys.stderr.write(k)とput newfiles + = 1 print文を最下部に表示します – mintgreen
@SvenMarnach 'if'ブロックのインデントを参照しています。彼らは 'for'ループ内にあるように見えます。また、あなたが持っている論理は、あなたの記述が言っていることを全くしません。すべてのファイルを1回ループして停止します。そして、私たちをより簡単にするために、エラーはどんな行為に投げかけられていますか?最後に、 'dir_path'が文字列リテラルではなくパラメータになることを意味すると思います。 –