盤查該目錄下檔案
盤查某目錄下所有檔案及大小
功能說明
- 因需要了解某目錄檔案有那些順便記錄該檔的大小,以下是我用
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}") # 提示用戶掃描已完成