您是否曾花費數小時手動整理電腦中雜亂無章的檔案?從重新命名、移動檔案到創建資料夾,這些重複性的工作不僅耗時,還容易出錯。
幸運的是,Python 內建的 os 模組可以幫您解決這個問題。os (Operating System) 模組提供了與作業系統互動的功能,讓您能夠用程式碼來自動化各種檔案與資料夾的管理操作。
本文將帶您認識 os 模組中的幾個核心函式,並透過實戰範例,讓您掌握自動化檔案操作的技巧。
1. 啟用 os 模組
os 是一個標準函式庫,使用前只需將它匯入:
import os
2. 認識路徑相關的基礎概念
在進行檔案操作前,您必須先了解路徑(Path)的概念。os 模組提供了幾個重要的函式來處理檔案路徑。
- os.path.join():將多個路徑組合起來。這個函式會自動根據您的作業系統(Windows 的 \ 或 macOS/Linux 的 /)來選擇正確的分隔符號,避免相容性問題。
- os.getcwd():取得當前工作目錄(Current Working Directory)。
- os.listdir(path):列出指定路徑下的所有檔案與資料夾。
import os
# 組合路徑
folder_name = "reports"
file_name = "report_2025.txt"
full_path = os.path.join(folder_name, file_name)
print(f"組合後的路徑:{full_path}")
# 取得當前工作目錄
current_directory = os.getcwd()
print(f"當前工作目錄:{current_directory}")
# 列出當前目錄下的所有內容
contents = os.listdir(current_directory)
print(f"當前目錄下的所有內容:{contents}")
3. 創建、刪除與檢查資料夾
os 模組提供了直觀的函式來管理資料夾,這些操作在自動化檔案分類時特別實用。
- os.makedirs(path):遞迴地創建一個或多個資料夾。如果父資料夾不存在,它也會一併創建。
- os.rmdir(path):刪除一個空的資料夾。
- os.path.exists(path):檢查路徑是否存在。
- os.path.isdir(path):判斷路徑是否為一個資料夾。
import os
folder_to_create = "project/docs"
# 檢查資料夾是否存在,若不存在則創建
if not os.path.exists(folder_to_create):
os.makedirs(folder_to_create)
print(f"已成功創建資料夾:{folder_to_create}")
else:
print(f"資料夾 {folder_to_create} 已存在。")
4. 檔案操作:重新命名與刪除
除了資料夾,os 也能讓您輕鬆處理單一檔案。
- os.rename(src, dst):重新命名或移動檔案。
- os.remove(path):刪除一個檔案。
import os
# 假設存在一個名為 'old_file.txt' 的檔案
# 這裡先建立一個測試檔案
with open("old_file.txt", "w") as f:
f.write("這是測試內容")
# 重新命名檔案
os.rename("old_file.txt", "new_file.txt")
print("檔案已重新命名為 'new_file.txt'")
# 刪除檔案
if os.path.exists("new_file.txt"):
os.remove("new_file.txt")
print("檔案 'new_file.txt' 已被刪除。")
5. 綜合實戰:自動整理下載資料夾
現在,讓我們將所學的知識結合起來,撰寫一個簡單的腳本來自動整理您的下載資料夾。這個腳本會將不同類型的檔案分類到各自的資料夾中。
貼心提醒: 執行前,請務必將程式碼中的 download_folder 變數修改為您電腦上實際的下載資料夾路徑,否則程式將無法正常運作。
import os
import shutil # 另一個用於高階檔案操作的模組
# 假設您的下載資料夾路徑
download_folder = "C:/Users/YourUser/Downloads" # 請替換成您的實際路徑
os.chdir(download_folder) # 改變當前工作目錄到下載資料夾
# 定義檔案類型與目標資料夾的對應關係
file_types = {
"images": [".jpg", ".jpeg", ".png", ".gif"],
"documents": [".pdf", ".docx", ".xlsx", ".pptx"],
"archives": [".zip", ".rar", ".7z"],
"videos": [".mp4", ".mov", ".avi"]
}
# 遍歷下載資料夾中的所有內容
for item in os.listdir(download_folder):
# 判斷是否為檔案
if os.path.isfile(item):
# 取得副檔名並轉為小寫
_, ext = os.path.splitext(item)
ext = ext.lower()
# 根據副檔名找到對應的目標資料夾
for folder_name, extensions in file_types.items():
if ext in extensions:
target_folder = os.path.join(download_folder, folder_name)
# 創建目標資料夾(如果不存在)
if not os.path.exists(target_folder):
os.makedirs(target_folder)
# 移動檔案
shutil.move(item, os.path.join(target_folder, item))
print(f"檔案 '{item}' 已移動到 '{folder_name}' 資料夾。")
break # 找到目標後跳出迴圈
透過 os 模組,您能夠用程式碼賦予自己管理電腦檔案的能力,將原本繁瑣的重複性工作轉化為自動化的腳本,大幅提升您的工作效率。