Как получить дни между датами - PullRequest
3 голосов
/ 22 сентября 2011

Мне нужно удалить файлы старше 14 дней из каталога, в котором хранятся наши резервные копии.Я могу получить время для отдельного файла, используя что-то вроде этого:

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

Но меня смущает, как я использую timedelta, чтобы найти разницу между этой и текущей датой.

Я хотел бы использовать что-то вроде этого:

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

но я просто не понимаю.Я сам по себе, и я хотел бы помочь.

Ответы [ 4 ]

4 голосов
/ 22 сентября 2011

Попробуйте:

if time.time() - os.path.getmtime(filename) > 14 * 24 * 3600:
  print 'the file is older than 14 days'
2 голосов
/ 23 сентября 2011

a timedelta является результатом вычитания datetime из другого datetime. в этом примере я показываю, что мой /bin/bash составляет 1168 дней, а некоторые старше, чем мой /dev/null:

>>> 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 голосов
/ 23 сентября 2011

AIX имеет очень хороший ответ, используя модуль time.Вот ответ, который использует 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'
0 голосов
/ 23 сентября 2011
datetime.datetime.now()-datetime.timedelta(days=14)

Что-то подобное?

...