def is_newer_than(filename, timespec): """ Check if a file is newer than a given time. Timestamps can be specified absolute or relative. >>> import os, time >>> f=os.tmpnam() >>> open(f,'w').write('test') >>> time.sleep(2) >>> is_newer_than(f, '1 year') True >>> is_newer_than(f, '1 month') True >>> is_newer_than(f, '1 week') True >>> is_newer_than(f, '2 weeks') True >>> is_newer_than(f, '1 day') True >>> is_newer_than(f, '10 days') True >>> is_newer_than(f, '1 hour') True >>> is_newer_than(f, '5 hour') True >>> is_newer_than(f, '1 minute') True >>> is_newer_than(f, '1 second') False >>> is_newer_than(f, datetime.datetime.now()) False """ # Get modified time mtime = datetime.datetime.fromtimestamp(os.path.getmtime(filename)) # Direct date time object passed ? if isinstance(timespec, datetime.datetime): return (mtime > timespec) # Try parsing as relative time delta = relativetime.parse_relative_time(timespec) if delta == None: raise error("Invalid timespec passed") return (mtime > datetime.datetime.now() - delta)
def is_accessed_before(filename, timespec): """ Check if a file is accessed before a given time. Timestamps can be specified absolute or relative. >>> import time >>> f = 'osutils.py' >>> time.sleep(2) >>> is_accessed_before(f, '1 year') False >>> is_accessed_before(f, '1 month') False >>> is_accessed_before(f, '1 week') False >>> is_accessed_before(f, '2 weeks') False >>> is_accessed_before(f, '1 day') False >>> is_accessed_before(f, '10 days') False >>> is_accessed_before(f, '1 hour') False >>> is_accessed_before(f, '5 hour') False >>> is_accessed_before(f, '1 minute') False >>> is_accessed_before(f, '1 second') True >>> is_accessed_before(f, datetime.datetime.now()) True """ # Get accessed time atime = datetime.datetime.fromtimestamp(os.path.getatime(filename)) # Direct date time object passed ? if isinstance(timespec, datetime.datetime): return (atime < timespec) # Try parsing as relative time delta = relativetime.parse_relative_time(timespec) if delta == None: raise error("Invalid timespec passed") return (atime < datetime.datetime.now() - delta)