Print file age in seconds using Python

Viewed 36812

I need my script to download new file, if the old one is old enough. I set the maximum age of file in seconds. So that I would get back on track with my script writing I need example code, where file age is printed out in seconds.

6 Answers

The accepted answer does not actually answer the question, it just gives the answer for last modification time. For getting the file age in seconds, minutes or hour you can do this.

import os, time

def file_age(filepath):
    return time.time() - os.path.getmtime(filepath)

seconds = file_age('myFile.txt') # 7200 seconds
minutes = int(seconds) / 60 # 120 minutes
hours = minutes / 60 # 2 hours

This will do in days, can be modified for seconds also:

#!/usr/bin/python

import os
import datetime
from datetime import date

t1 = os.path.getctime("<filename>")

now = datetime.datetime.now()

Y1 = int(datetime.datetime.fromtimestamp(int(t1)).strftime('%Y'))
M1 = int(datetime.datetime.fromtimestamp(int(t1)).strftime('%m'))
D1 = int(datetime.datetime.fromtimestamp(int(t1)).strftime('%d'))

date1 = date(Y1, M1, D1)

Y2 = int(now.strftime('%Y'))
M2 = int(now.strftime('%m'))
D2 = int(now.strftime('%d'))

date2 = date(Y2, M2, D2)

diff = date2 - date1

days = diff.days

You can get it by using OS and datetime lib in python:

import os
from datetime import datetime

def fileAgeInSeconds(directory, filename):
    file = os.path.join(directory, filename)
    if os.path.isfile(file):
        stat = os.stat(file)
        try:
            creation_time = datetime.fromtimestamp(stat.st_birthtime)
        except AttributeError:
            creation_time = datetime.fromtimestamp(stat.st_mtime)
        curret_time = datetime.now()
        duration = curret_time - creation_time
        duration_in_s = duration.total_seconds()
        return duration_in_s
    else:
        print('%s File not found' % file)
        return 100000

#Calling the function

dir=/tmp/
fileAgeInSeconds(dir,'test.txt')
Related