pythonで数日前の日付を取得する

datetimeで簡単に前の日付を取得できる

日付の取得

import datetime

# daysで日付を指定する
date = datetime.datetime.now() - datetime.timedelta(days=3)

ディレクトリを消す

20211201
20211202
20211203
20211204

上記のような日付が名前となっているディレクトリがある場合でX日前のディレクトリを消すスクリプト

import datetime
import shutil
import os
import argparse

def get_target_dir_by_date(rootdir, delta_days):
    result = {"isFound":False, "path":""}
    date = datetime.datetime.now() - datetime.timedelta(days=delta_days)
    target_dir_path = os.path.join(rootdir, date.strftime("%Y%m%d"))
    if os.path.exists(target_dir_path):
        result["path"] = target_dir_path
        result["isFound"] = True
    return result

def setup_args():
    parser = argparse.ArgumentParser(description="日付がディレクトリ名になっている特定のディレクトリを消す")
    parser.add_argument("targetdir")
    parser.add_argument("deltadays", type=int)
    args = parser.parse_args()
    return args

def setup():
    args = setup_args()
    rootdir = args.targetdir
    deltadays = args.deltadays
    return {"rootdir": rootdir, "deltadays": deltadays}

if __name__ == "__main__":

    setup_info = setup()

    b = get_target_dir_by_date(setup_info["rootdir"], setup_info["deltadays"])
    if b["isFound"]:
        print("Delete the directory: %s"%b["path"])
        res = shutil.rmtree(b["path"])