On 25 Oct 2005 10:22:24 -0700, "elake" <[EMAIL PROTECTED]> wrote:
>Is there a way to do this for a whole calendar month? > Yes, if you can specify exactly what you want to do. E.g., today is 2005-10-25. What date would you like as the earliest to keep for the four months? What if today's date was not available in the month of four months ago? Do you want to have cleansed logs always start on the first day of a month? if so, do you want to go back four prior months, or consider any current month days as being a month-log even if partial, and only include 3 prior months? You haven't defined your requirements ;-) if you wanted to go back to the first day of four months back, maybe you could call that earliest_time and delete all files where after import os, stat you remove files where os.stat(pathtofile)[stat.ST_MTIME] < earliest_time going back from current time might go something like >>> import time >>> y,m = time.localtime()[:2] >>> y,m (2005, 10) >>> y,m = divmod(y*12+m-1-4,12) # -1 for 0..11 months >>> m+=1 # back to 1..12 >>> y,m (2005, 6) >>> time.strptime('%04d-%02d-01'%(y,m), '%Y-%m-%d') (2005, 6, 1, 0, 0, 0, 2, 152, -1) >>> earliest_time = time.mktime(time.strptime('%04d-%02d-01'%(y,m), >>> '%Y-%m-%d')) >>> earliest_time 1117609200.0 >>> time.ctime(earliest_time) 'Wed Jun 01 00:00:00 2005' Hm ... Jun, Jul, Aug, Sep, Oct -4 -3 -2 -1 -0 I guess that guarantees 4 full prior months. I used strptime to build a complete 9-tuple rather than doing it by hand, which I'm not sure off hand how to do ;-) There's another module that does date interval addition/subtraction, but it didn't come with the batteries in my version. BTW, make sure all your date stuff is using the same epoch base date, in case you have some odd variant source of numerically encoded dates, e.g., look at >>> import time >>> time.localtime(0) (1969, 12, 31, 16, 0, 0, 2, 365, 0) >>> time.ctime(0) 'Wed Dec 31 16:00:00 1969' >>> time.gmtime(0) (1970, 1, 1, 0, 0, 0, 3, 1, 0) Regards, Bengt Richter -- http://mail.python.org/mailman/listinfo/python-list