「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
でインストールしておく必要があります。
コメント