N日前のファイルを削除するPythonコード
N日前のファイルを削除するpythonコードが落ちてないかなと探していました。しかし以外にも見つからないものです。そこで色々考えて、コピペを繰り返していたらわけがわからなくなってきました。
そんなこんなで、ふと色々な記事を見ていたのですが、一番プログラムを効率よく学ぶにはオンライン学習サービスを使うことではないのかなと思います。お金はかかりますが確実にステップアップはできるでしょう。ステップアップしてリターンが返ってくるかは自分次第か?とか考えてました。
わけのわからなくなったコードを載せておきます。
import os, pprint, time from datetime import datetime from operator import itemgetter def epoch_to_datetime(epoch): return datetime(*time.localtime(epoch)[:6])filelists = [] for file in os.listdir(): base, ext = os.path.splitext(file) if ext == '.png': filedate = os.path.getctime(file) filedate = epoch_to_datetime(filedate) filelists.append([file, filedate]) elif ext == '.jpg': filedate = os.path.getctime(file) filedate = epoch_to_datetime(filedate) filelists.append([file, filedate]) filelists.sort(key=itemgetter(1), reverse=True) pprint.pprint(filelists)
まず見た目からして汚いのでコードを読む気が失せるでしょう。面白い部分は関数達です。splittext()はdirnameとbasenameに自動で振り分けを行う関数です。dirnameはパスの部分でbasenameというのは拡張子の部分です(ちょっと間違えているかもしれないです。)
自動で振り分けて変数に入れるものですから、 if ext == ‘.png’:という書き方が可能です。これは便利です。
問題はfiledateの部分で、これはエボックtimeというものをdatetimeに変換しています。ここまでは確かに変換できたのですがN日前という条件構文をどのようにして書けば良いのかがわかりませんでした。
そのためこのプログラムは未完成です。カレントディレクトリの.png.jpgファイルをリストで列挙するだけのコードになります。
インターネットで調べていたのですがN日前のファイルを削除するには、pythonではなく他の方法だったらあるみたいです。
できればpythonでやりたいところです。datetimeオブジェクトにも少し癖があります。
考えていた結果プログラムが完成しました。(実質ほぼインターネットから拾ってきたも同然ですが・・・)気になる方は
「【完成】n日前の特定のファイルを削除する【python】」をご覧ください。