2011-09-22 14 views
3

バックアップを保存しているディレクトリから14日以上経過したファイルを削除する必要があります。私はこのようなものを使用して、個々のファイルの時間を得ることができます。日付間の日数を取得するには

start = (os.path.getmtime(join(dirpath, name))/3600*24) 

しかし、私はこれと現在の日付の差を検索するにはtimedeltaを使用する方法で混乱しています。

私はこのようなものを使用したいと思います:

d = (datetime.timedelta(time.now() - os.path.getmtime(join(dirpath, dirname)) 

が、私はちょうどそれが届きません。私はここにいます。私は助けが大好きです。

答えて

3

試してみてください。

if time.time() - os.path.getmtime(filename) > 14 * 24 * 3600: 
    print 'the file is older than 14 days' 
+0

お試しいただきありがとうございます。適切な数の括弧を追加し、私の必要性のためのトリックを行うかもしれません。 –

0
datetime.datetime.now()-datetime.timedelta(days=14) 

そのような何か?

2

a timedeltaは、別のdatetimeからdatetimeを減算した結果です。

>>> import datetime 
>>> import os.path 
>>> datetime.datetime.fromtimestamp(os.path.getmtime("/dev/null")) 
datetime.datetime(2011, 7, 24, 18, 58, 28, 504962) 
>>> datetime.datetime.fromtimestamp(os.path.getmtime("/bin/bash")) 
datetime.datetime(2008, 5, 12, 15, 2, 42) 
>>> datetime.datetime.fromtimestamp(os.path.getmtime("/dev/null"))-datetime.datetime.fromtimestamp(os.path.getmtime("/bin/bash")) 
datetime.timedelta(1168, 14146, 504962) 
>>> d = datetime.datetime.fromtimestamp(os.path.getmtime("/dev/null"))-datetime.datetime.fromtimestamp(os.path.getmtime("/bin/bash")) 
>>> d.days 
1168 
0

AIXはtimeモジュールを使用して完璧な答えを持っています。この例では私は私の/bin/bashは1168日で、私の/dev/nullよりもいくつかの古いことを示しています。ここでは、datetimeを使用した回答です。

from datetime import * 
maxdays = timedelta(14) 
mtime =datetime.fromtimestamp(os.path.getmtime(filename)) 
if mtime - datetime.now() > maxdays: 
    print filename, 'older than 14 days' 
関連する問題