Skip to main content

盤查該目錄所有副檔名

  盤查該目錄所有副檔名及統計數量

功能說明


  • 因需要了解某目錄該目錄所有副檔名、統計數量及檔案大小,以下是我用 ChatGPT 協助產出的程式。
import os
import csv

# 定義一個函數來將字節數轉換為更易讀的單位,如 KB, MB, GB
def get_file_size_in_units(size_in_bytes):
    """Convert size from bytes to a more human-readable unit."""
    units = ["B", "KB", "MB", "GB", "TB"]  # 定義單位列表,從字節到太字節
    size = size_in_bytes  # 初始化大小為字節數
    unit = units.pop(0)  # 從單位列表中彈出最小單位 "B"
    while size >= 1024 and units:  # 當大小大於等於1024且仍有更大的單位時
        size /= 1024  # 將大小除以1024以轉換為更大的單位
        unit = units.pop(0)  # 更新單位
    return f"{size:.2f} {unit}"  # 返回格式化後的大小與單位

# 定義一個函數來收集指定目錄中的文件統計信息
def collect_statistics(directory):
    statistics = {}  # 用來存儲每種副檔名的統計數據的字典
    
    # 遍歷指定目錄下的所有文件和子目錄
    for root, dirs, files in os.walk(directory):
        for file in files:
            _, ext = os.path.splitext(file)  # 獲取文件的副檔名
            ext = ext.lower()  # 將副檔名統一轉換為小寫
            if ext not in statistics:  # 如果該副檔名還沒有被統計過
                statistics[ext] = {"count": 0, "size": 0}  # 初始化統計數據
            file_path = os.path.join(root, file)  # 獲取文件的完整路徑
            statistics[ext]["count"] += 1  # 增加該副檔名的文件數量
            statistics[ext]["size"] += os.path.getsize(file_path)  # 增加該副檔名的文件總大小
    
    return statistics  # 返回收集到的統計數據

# 定義一個函數來將統計數據保存為 CSV 文件
def save_statistics_to_csv(statistics, output_file):
    with open(output_file, mode='w', newline='') as file:  # 以寫入模式打開 CSV 文件
        writer = csv.writer(file)  # 創建 CSV 編寫器對象
        writer.writerow(["Extension", "Count", "Total Size"])  # 寫入 CSV 文件的標題行
        for ext, stats in statistics.items():  # 遍歷統計數據字典
            writer.writerow([ext, stats["count"], get_file_size_in_units(stats["size"])])  # 寫入每個副檔名的統計數據

# 設定目錄路徑(替換為實際的目錄路徑)
directory = "A"

# 設定輸出的 CSV 文件名
output_file = "file_statistics.csv"

# 收集指定目錄的文件統計數據
statistics = collect_statistics(directory)

# 將統計數據保存為 CSV 文件
save_statistics_to_csv(statistics, output_file)

# 打印提示信息,告知保存位置
print(f"Statistics saved to {output_file}")

備註





參考相關網頁