以前に気象情報をグラフ、画像化してフォルダに保存するところまで実行したが、フォルダ内に画像ファイルがどんどこ溜まっていってしまう。
適宜削除する必要があるので、フォルダ内のファイルを移動するスクリプトを作成してみる。
◆スクリプト(ファイルの移動)
# =================================== # function; # move files that created before ** days ago # from directory # =================================== # =================================== # import # =================================== import glob import os import time import datetime import shutil # =================================== # function # =================================== # get today def Getdate(): # datetime dtNow = datetime.date.today() return dtNow # Create Flag date def FlagDate(dtToday,beforedays): dtFlag = dtToday - datetime.timedelta(days=beforedays) return dtFlag # see inside of directory def Seedir(currentdir,dtFlag): # Check inside of directory files = glob.glob(currentdir + "/fig/*.jpg") # pick up files that should be moved out l=[] l2=[] for f in files: # epoc dt1 = os.path.getctime(f) # datetime dt2 = datetime.date.fromtimestamp(dt1) # filefullpath filePath = os.path.abspath(f) if dt2 >= dtFlag: print("yes",dt2) l.append(filePath) else: print("no",dt2) l2.append(filePath) return l2 # move file def fileMove(To_dir,fileList): for f in fileList: shutil.move(f, To_dir) print("old file was moved") # =================================== # ready for exe # =================================== # current directory currentdir = os.getcwd() # move out before **dats ago beforedays = 3 # Directory name where files move to To_dir = currentdir + '/trash' # =================================== # execution # =================================== dtToday = Getdate() dtFlag = FlagDate(dtToday,beforedays) fileList = Seedir(currentdir,dtFlag) fileMove(To_dir,fileList)
溜まって不要になったファイルを削除する、、、というのが当初に目的だったけど、削除して後で見たい…とかなると困るので、とりあえず別フォルダに移動して、そのあとに全削除をすることで行こうと思う。全削除はまた後で追記予定。
意外とハマったのがdatetimeとエポックの存在。フォルダ内のファイルの作成日時を取得してみたらエポック型…一方、何日前まで・・・という日時計算はdatetime型・・・あ~、なるほどこりゃ面倒くさい。とにかくはdatetimeにして足し引き算、そして比較をして、「〇日前のファイルは」という仕分けをして処理する、それでいいや。
これで定期実行の直前、もしくは直後に組み込んでその都度フォルダ内を整理させることにしたい。ちらかったフォルダは嫌いだ。