盤查該目錄所有副檔名
盤查該目錄所有副檔名及統計數量
功能說明
- 因需要了解某目錄該目錄所有副檔名、統計數量及檔案大小,以下是我用
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}")