[Tutor] Help listing directory timestamps and deleting directories

Vince Spicer vince at vinces.ca
Mon Jan 24 20:02:53 CET 2011


On Mon, Jan 24, 2011 at 11:25 AM, bsdwiz at gmail.com <bsdwiz at gmail.com> wrote:

> Hi, hoping for some help here. I've been trying to write a python script
> (complete newb) and have spent several days trying to get this right with no
> success.
>
> I am trying to list timestamps in a directory and if they are older than x
> amount of days delete the directories. It seems that in my for loop it is
> only evaluating the last timestamp of the last directory and using that
> timestamp to make the deletion decision. I realize that this script isn't
> going to delete the directories with evaluate as true but I haven't been
> able to get that far yet...
>
>
>
> ###########start script##############
> ###Modules###
>
> import os
> import time
>
> ###Global Variables###
>
> curr_t = time.time()
>
> days = 2629743 #2629743 is 30 days in epoch time.
>
> directory=os.path.join("/home", "userid", "python")
>
>
> for r,d,f in os.walk(directory):
>     for dir in d:
>         timestamp = os.path.getmtime(os.path.join(r,dir)) ## It seems that
> the below "if" statement is only comparing the timestamp of the last
> directory that this variable lists.
>         print timestamp
>         if curr_t - days < timestamp:                  #### I am expecting
> this statement to compare each timestamp of the "directory" variable and
> print out if it should be deleted or not.
>             print "Your file will be deleted"
>
>         else:
>             print "File will NOT be deleted..."
>
>
> #######################end of script#############################
>
>
>
> Thank you for your time!
>
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor
>
>
First off, I would recommend using dates and not times, this can help make
things clearer
when dealing with dates, also the dateutil module can make date math a lot
simpler (easy_install dateutil)


from datetime import datetime
from dateutil.relativedelta import relativedelta

remove_after = datetime.now() - relativedelta(days=31)  # exactly 1 month
prior to today
check_dir = "/path/to/whatever"

for r,d,f in os.walk(check_dir):
    for dir in d:
        loc =  os.path.join(r,dir)
        last_modified = datetime.fromtimestamp(os.path.getmtime(loc))
        if last_modifed < remove_after:
            print "delete old directory", loc
        else:
            print "keep recently modified", loc



Hope this helps,

Vince Spicer
Developer
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20110124/99c94c39/attachment.html>


More information about the Tutor mailing list