Pythonでファイル・ディレクトリを削除する


press
Pythonでファイル・ディレクトリを削除する

Pythonでファイル・ディレクトリを削除する

日付形式のディレクトリを管理していると古いデータを定期的に整理する必要が出てきます。特に画像ファイルなどの日々大量に生成されるデータを扱うシステムでは、ストレージの圧迫を防ぐため過去のデータを自動的に削除する仕組みが重要です。

Pythonを使って日付別のディレクトリを判別し、特定の日付より古いディレクトリを安全に削除する方法を解説します。

開発環境

PC: MacBook Pro (14, 2021)
OS: macOS Monterey 12.6.7
Python: 3.11.6

ファイル・ディレクトリ削除のコード

import datetime
import os
import shutil

base_directory = "images"

current_date = datetime.datetime.now()
today_date_int = int(current_date.strftime("%Y%m%d"))

if not os.path.exists(base_directory):
    print(f"指定されたディレクトリ '{base_directory}' が存在しません。")
else:
    for dir_name in os.listdir(base_directory):
        if dir_name.isdigit() and len(dir_name) == 8 and int(dir_name) < today_date_int:
            dir_path = os.path.join(base_directory, dir_name)
            try:
                shutil.rmtree(dir_path)
                print(f"削除しました: {dir_path}")
            except Exception as e:
                print(f"削除に失敗しました: {dir_path} - エラー: {e}")

解説

import datetime
import os
import shutil

ライブラリのインポート

base_directory = "images"

削除対象のディレクトリを指定

current_date = datetime.datetime.now()
today_date_int = int(current_date.strftime("%Y%m%d"))

現在の日付の取得と取得した値を整数フォーマットに変換

if not os.path.exists(base_directory):
    print(f"指定されたディレクトリ '{base_directory}' が存在しません。")

指定したディレクトリが存在するかを確認

else:
    for dir_name in os.listdir(base_directory):

指定したディレクトリ内のサブディレクトリやファイルの名前を取得

if dir_name.isdigit() and len(dir_name) == 8 and int(dir_name) < today_date_int:

dir_name.isdigit()
数字のみで構成されているか確認

len(dir_name) == 8
文字列の長さが8文字であることを確認

int(dir_name) < today_date_int
dir_name を整数に変換して今日の日付よりも前であるかを確認

dir_path = os.path.join(base_directory, dir_name)
try:
    shutil.rmtree(dir_path)
    print(f"削除しました: {dir_path}")
except Exception as e:
    print(f"削除に失敗しました: {dir_path} - エラー: {e}")

os.path.join(base_directory, dir_name)
base_directorydir_name を結合して削除対象のディレクトリのパスを生成

shutil.rmtree(dir_path)
指定したディレクトリ dir_path を削除します。

try-except
削除に失敗した場合にはエラーメッセージを表示、削除に成功した場合には削除完了のメッセージを表示


株式会社ファントムへのお問い合わせ

群馬県でPythonを使ったAIやソフトウェアを開発している株式会社ファントムが運営しています。




    Related Articles

    Python

    Pytorchで画像分類の精度を高める

    今回、画像分類で精度を高めるために複数データの入力できる学習モデルを作成した。その経緯から始めて実際のモデリングまでを書くことにする。 前提 今回は洋服の図面を読み込み、それがなんの種類かを判別するCNNを作成した。 図 […]

    Posted on by EIGHT
    Python

    衣服の種類を判定する学習モデルについて

    衣服の図面画像を読み込ませるとその種類を返すシステムを作成した。 学習モデルについて 画像から輪郭だけを抽出した輪郭画像と、オリジナル画像の2つを入力データにすることにした。 例えばTシャツならTの字になっているし、スカ […]

    Posted on by EIGHT

    最新情報をお届けします!

    メーリングリストに登録するとファントムの最新情報をお届けします

    お客様のメールアドレスを共有することはありません