「n日前の特定のファイルを削除するプログラム」が完成したので紹介したいと思います。
n日前の特定のファイルを削除する
import datetime, os, send2trash
now = datetime.date.today() # 現在の日付を取得
# os.listdir()は好きなところを選んでください。
for file in os.listdir():
mtime = datetime.date.fromtimestamp(int(os.path.getmtime(file)))
base, ext = os.path.splitext(file)
if (now - mtime).days >= 14: # 14日以上経過している場合は削除
if ext.endswith('.jpg') or ext.endswith('.png'):
send2trash.send2trash(file)このプログラムのポイント
5行目のforループではfor file in os.listdir()としています。os.listdir()関数は引数を何も指定しなければカレントディレクトリになり、ファイルをリストにします。それをfile変数に代入して回します。
mtime = の部分は、os.path.getmtime()関数を使ってファイルの最終更新日時を取得しています。
次の7行目が興味深いです。前回も説明しましたが、os.path.splitextはパスをディレクトリ部分と拡張子部分に自動的に分割し、それらを変数に入れてくれます。dirnameはパスの部分を表し、basenameは拡張子の部分を表します。
次のポイントは9行目です。実際にはif ext == '.jpg'などと書くこともできます。しかし、この構文で動作を確認した結果、なぜかショートカットファイルまで消えてしまいました。そのため、ext.endswith()を使用しています。endswith()メソッドは引数の最後が指定した文字列と一致したらTrueを返します。
最後に、完全にファイルを削除するのではなく、send2trash()メソッドを使ってゴミ箱に移動しています。send2trashは外部モジュールなので、事前にpip installでインストールしておく必要があります。


コメント