【完成】n日前の特定のファイルを削除する【Python】

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

コメント

タイトルとURLをコピーしました