[Python] 檔名翻譯去括號小助手

針對 檔名處理 的五大功能:

  1. 移除檔名中的所有空格
  2. 將檔名中的簡體中文轉換為繁體中文
  3. 刪除檔名中的非法字符(例如:\ / ? : * ” < > | ; ¿)
  4. 如果檔名中括號內包含 “kbit”(例如:(128kbit_AAC)),則刪除括號及其內容,否則保留
  5. 移除檔名中的所有「.」,只保留最後一個作為副檔名的分隔符

要運行這支程式,Windows 電腦需要安裝以下 Python 套件:

opencc: 用於簡體轉繁體的轉換

$ pip install opencc-python-reimplemented

import os
import re
from opencc import OpenCC

# 這支程式的功能:
# 1. 移除檔名中的所有空格
# 2. 將檔名中的簡體中文轉換為繁體中文
# 3. 刪除檔名中的非法字符(例如:\ / ? : * " < > | ; ¿)
# 4. 如果檔名中括號內包含 "kbit"(例如:(128kbit_AAC)),則刪除括號及其內容,否則保留
# 5. 移除檔名中的所有「.」,只保留最後一個作為副檔名的分隔符

# 初始化簡體轉繁體的轉換器
cc = OpenCC('s2t')  # 's2t' 表示從簡體轉繁體

# 定義目標資料夾的路徑
folder_path = os.path.dirname(os.path.abspath(__file__))

# 定義一個函數來修正檔名
def fix_filename(file_name):
    # 分離檔名和副檔名
    name_part, ext = os.path.splitext(file_name)
    
    # 1. 刪除空格
    name_part = name_part.replace(' ', '')
    
    # 2. 將簡體中文轉換為繁體中文
    name_part = cc.convert(name_part)
    
    # 3. 移除不允許的特殊字符,加入 `;` 和 `¿`
    name_part = re.sub(r'[\\/:*?"<>|;¿]', '', name_part)
    
    # 4. 刪除括號內包含 "kbit" 的內容,保留其他括號
    name_part = re.sub(r'\s*\([^)]*kbit[^)]*\)', '', name_part)
    
    # 5. 移除檔名中的所有「.」,只保留最後的副檔名的「.」
    name_part = name_part.replace('.', '')
    
    # 返回重新組合的檔名
    return name_part + ext

# 遍歷資料夾中的所有檔案
for file_name in os.listdir(folder_path):
    file_path = os.path.join(folder_path, file_name)

    # 檢查是否為檔案而非資料夾
    if os.path.isfile(file_path):
        # 修正檔名
        new_file_name = fix_filename(file_name)
        
        # 如果檔名有變化,則重命名檔案
        if new_file_name != file_name:
            new_file_path = os.path.join(folder_path, new_file_name)
            os.rename(file_path, new_file_path)
            print(f"檔案已重命名:{file_name} -> {new_file_name}")

print("檔名修正完成。")

如果有 100個 txt文字檔,將此小程式放在同資料夾後,執行。