2011-09-22 1 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이 1천1백68일하고 내 /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'