Python 檔案管理術:使用 os 模組自動化你的檔案操作

Python 檔案管理術:使用 os 模組自動化你的檔案操作
整齊排列的文件夾,象徵著使用 Python os 模組進行自動化檔案管理。

您是否曾花費數小時手動整理電腦中雜亂無章的檔案?從重新命名、移動檔案到創建資料夾,這些重複性的工作不僅耗時,還容易出錯。

幸運的是,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 模組,您能夠用程式碼賦予自己管理電腦檔案的能力,將原本繁瑣的重複性工作轉化為自動化的腳本,大幅提升您的工作效率。

較新的 較舊