Pythonでディレクトリとサブディレクトリの作成日時を取得する方法

この記事では、Pythonを使用してディレクトリとサブディレクトリの作成日時を取得する手法について詳しく解説します。具体的なコード例とその解説、さらに応用例を3つ以上含めています。

目次

はじめに

ファイルやディレクトリのメタデータには、作成日時や最終更新日時など、様々な情報が含まれています。これらの情報は、システム管理やデータ分析、バックアップ戦略などで非常に役立つ場合があります。

基本的な手法

osモジュールを用いた手法

Pythonの標準ライブラリである`os`モジュールを使う方法です。


import os
import time

# ディレクトリの作成日時を取得
def get_directory_timestamp(directory_path):
    timestamp = os.path.getctime(directory_path)
    return time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(timestamp))

directory_path = './sample_directory/'
print(get_directory_timestamp(directory_path))

このコードは、指定したディレクトリの作成日時を`YYYY-MM-DD HH:MM:SS`形式で出力します。

応用例

サブディレクトリも含めて作成日時を取得

サブディレクトリも含めて作成日時を一覧表示します。


# サブディレクトリも含めて作成日時を取得
def get_subdirectories_timestamp(directory_path):
    for root, dirs, _ in os.walk(directory_path):
        for dir_name in dirs:
            full_path = os.path.join(root, dir_name)
            print(f"{full_path}: {get_directory_timestamp(full_path)}")

get_subdirectories_timestamp(directory_path)

作成日時でフィルタリング

特定の期間内に作成されたディレクトリだけを抽出する例です。


from datetime import datetime
# 期間内に作成されたディレクトリの作成日時を取得
def filter_directories_by_date(directory_path, start_date, end_date):
    for root, dirs, _ in os.walk(directory_path):
        for dir_name in dirs:
            full_path = os.path.join(root, dir_name)
            timestamp = get_directory_timestamp(full_path)
            if start_date <= datetime.strptime(timestamp, '%Y-%m-%d %H:%M:%S') <= end_date:
                print(f"{full_path}: {timestamp}")
start_date = datetime(2021, 1, 1)
end_date = datetime(2021, 12, 31)
filter_directories_by_date(directory_path, start_date, end_date)

CSVファイルへの出力

取得したディレクトリの作成日時をCSVファイルに保存する例です。


import csv

# 作成日時をCSVファイルに出力
def export_to_csv(directory_path, csv_file_path):
    with open(csv_file_path, 'w', newline='') as csvfile:
        csv_writer = csv.writer(csvfile)
        csv_writer.writerow(['Directory Path', 'Created Time'])
        
        for root, dirs, _ in os.walk(directory_path):
            for dir_name in dirs:
                full_path = os.path.join(root, dir_name)
                timestamp = get_directory_timestamp(full_path)
                csv_writer.writerow([full_path, timestamp])

csv_file_path = './directory_timestamps.csv'
export_to_csv(directory_path, csv_file_path)

まとめ

Pythonの`os`モジュールを使用して、ディレクトリおよびサブディレクトリの作成日時を取得する方法を詳しく解説しました。応用例として、サブディレクトリの日時取得、期間によるフィルタリング、CSVへの出力の3つを紹介しました。これらの手法を組み合わせることで、より高度なデータ管理や解析が可能となります。

コメント

コメントする

目次