Q: finding distance between 2 time's

jkv jkv at unixcluster.dk
Sat May 30 12:06:55 CEST 2009


Hi Martin,

What i usally do is to convert the two times to seconds since epoch and
compare the two values in seconds. You can use time.mktime to convert
localtime to seconds since epoch.

I added a few lines to your script, and now it ought to only print files
newer than 3601 seconds (3600 seconds is one hour).
The modification to you script is just some quick code, im pretty sure
on can compress it a bit.

Regards,
Johnny

script:

import os, time

def buildList(directory):
    listing = os.listdir(directory)
    for x in listing:
        x = os.path.join(directory, x)
        if os.path.isdir(x):
            print ('dir -> %s') % x
        if os.path.isfile(x):
            current_time = time.localtime()
            tstF = time.localtime(os.path.getmtime(x))
            #convert the current time to seconds since epoch
            current_epoch=time.mktime(current_time)
            #convert the timestamp on the file to seconds since epoch
            file_epoch = time.mktime(tstF)
            nSize = os.path.getsize(x)
            time_difference = current_epoch - file_epoch
            #if file newer than one hour print a line
            if time_difference < 3601:
              print ('NEW FILE -> %s %d @ %s') % (x, nSize, time.asctime
(tstF))
   return 0

tstN = time.localtime()
print tstN
print "Time now: %s" % time.asctime(tstN)
buildList('/')


martin at hvidberg.net wrote:
> I made this little script (below) to look througt a dir to see if
> there are any files newer than .e.g. 1 hour.
> I have the loop through the dir working and can retreive file time as
> well as present time.
> both time variables are in the format returned by time.localtime()
>
> My question:
> How do I find the difference between such two time variables, to
> calculate the 'age' of the file?
>
> :-) Martin
>
> ------8<------ Code begin -------------
>
> import os, time
>
> def buildList(directory):
>     listing = os.listdir(directory)
>     for x in listing:
>         x = os.path.join(directory, x)
>         if os.path.isdir(x):
>             print ('dir -> %s') % x
>         if os.path.isfile(x):
>             tstF = time.localtime(os.path.getmtime(x))
>             nSize = os.path.getsize(x)
>             print ('fil -> %s %d @ %s') % (x, nSize, time.asctime
> (tstF))
>     return 0
>
> tstN = time.localtime()
> print tstN
> print "Time now: %s" % time.asctime(tstN)
> buildList('C:\Martin\Work\Work_Eclipse\.metadata')
>
>
>   


-- 
Regards,
jkv
http://unixcluster.dk/public.key




More information about the Python-list mailing list