Skip to main content

盤查該目錄下檔案

  盤查某目錄下所有檔案及大小

功能說明


  • 因需要了解某目錄檔案有那些順便記錄該檔的大小,以下是我用 ChatGPT 協助產出的程式。
import os  # 匯入 os 模組來處理文件和目錄操作
import csv  # 匯入 csv 模組來寫入 CSV 文件
import math  # 匯入 math 模組來進行數學計算

# 定義一個函數,將檔案大小從位元組轉換為適當的單位(如 B、KB、MB、GB 等)
def get_size_in_units(size_in_bytes):
    if size_in_bytes == 0:  # 如果檔案大小為 0,直接返回 "0B"
        return "0B"
    # 定義一個包含各種大小單位的元組
    size_name = ("B", "KB", "MB", "GB", "TB")
    # 計算以 1024 為底的對數,得到相應的單位指數
    i = int(math.floor(math.log(size_in_bytes, 1024)))
    # 計算對應單位的檔案大小
    p = math.pow(1024, i)
    s = round(size_in_bytes / p, 2)  # 四捨五入到小數點後兩位
    return f"{s} {size_name[i]}"  # 返回格式化的檔案大小字串

# 定義一個函數來掃描指定的目錄,並收集檔案路徑和檔案大小
def scan_directory(directory):
    file_data = []  # 用來存儲檔案資訊的清單
    
    # 使用 os.walk 遞迴地掃描目錄中的所有檔案
    for root, dirs, files in os.walk(directory):
        for file in files:
            file_path = os.path.join(root, file)  # 獲取檔案的完整路徑
            file_size = os.path.getsize(file_path)  # 獲取檔案大小(以位元組為單位)
            file_size_formatted = get_size_in_units(file_size)  # 轉換為合適的大小單位
            file_data.append([file_path, file_size_formatted])  # 將資料添加到清單中
    
    return file_data  # 返回包含所有檔案資訊的清單

# 定義一個函數,將收集到的檔案資訊寫入 CSV 檔案
def write_to_csv(file_data, output_csv):
    # 使用 'w' 模式打開輸出的 CSV 檔案,如果不存在則創建它
    with open(output_csv, mode='w', newline='', encoding='utf-8', errors='replace') as file:
        writer = csv.writer(file)  # 創建一個 CSV writer 物件
        writer.writerow(["File Path", "Size"])  # 寫入 CSV 標題
        writer.writerows(file_data)  # 寫入所有檔案資訊

# 主程序部分
if __name__ == "__main__":
    directory = "A"  # 指定要掃描的目錄,將 "A" 改成你要掃描的目錄路徑
    output_csv = "output.csv"  # 指定輸出的 CSV 檔案名稱
    file_data = scan_directory(directory)  # 呼叫函數來掃描目錄並獲取檔案資料
    write_to_csv(file_data, output_csv)  # 呼叫函數將資料寫入 CSV 檔案
    print(f"掃描完成,結果已輸出至 {output_csv}")  # 提示用戶掃描已完成

備註





參考相關網頁