月毎のフォルダにバックアップを保存している状況で、一定期間経過して古くなったフォルダを
消すことを考える。例えば、半年より前のフォルダは削除のように。
pythonでは、datetimeとdateutilのrelativedeltaを使って日付の比較が出来る。
#-*- encoding: utf-8 -*- from datetime import datetime from dateutil.relativedelta import * def main(): ms = ['201201', '201202', '201203', '201204', '201205', '201206', '201207', '201208', '201209', '201210', '201211', '201212'] today = datetime.today() N = -6 for m in ms: if today + relativedelta(months=N) > datetime.strptime(m, '%Y%m'): print 'old: %s' %m else: print 'new: %s' %m if __name__ == '__main__': main()
今日の日付todayに対してrelativedeltaで半年前の日付を計算。フォルダ名を想定したms配列の
各要素について、strptimeでフォーマット指定でdatetimeオブジェクトを作成して比較。
結果は
$ python date.py old: 201201 old: 201202 old: 201203 old: 201204 old: 201205 old: 201206 old: 201207 old: 201208 old: 201209 new: 201210 new: 201211 new: 201212
となりました。年月だけの場合、strptimeでは
In [48]: datetime.strptime('201209', '%Y%m') Out[48]: datetime.datetime(2012, 9, 1, 0, 0)
と日以降が作成されるので、201209もoldと判定されています。
datetimeとdatetimeutil、いいですね。