首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

Python 批量重命名檔案:將 .tmp 副檔名改為 .jpg

     編輯:更多程式設計知識

當收到大量以 .tmp 為副檔名的圖片檔案時,手動重命名極其繁瑣。本文示範如何使用 Python 標準庫 os 模組,僅需三行核心程式碼即可完成批量重命名。

核心程式碼

import os

for filename in os.listdir('.'):
    if os.path.splitext(filename)[1] == '.tmp':
        new_name = os.path.splitext(filename)[0] + '.jpg'
        os.rename(filename, new_name)
        print(f"Renamed: {filename} -> {new_name}")

程式碼解析

  1. os.listdir('.'):列出當前目錄下所有檔案與資料夾名稱。
  2. os.path.splitext(filename):將檔名分割為(主檔名, 副檔名)元組,例如 ('photo', '.tmp')。
  3. 判斷副檔名是否為 .tmp,若是則組合新檔名並呼叫 os.rename 重命名。

進階版:支援遞迴子目錄、錯誤處理與預覽模式

import os
import sys

def batch_rename(root_dir, old_ext, new_ext, dry_run=False):
    count = 0
    for dirpath, _, filenames in os.walk(root_dir):
        for filename in filenames:
            if filename.endswith(old_ext):
                old_path = os.path.join(dirpath, filename)
                new_filename = filename[:-len(old_ext)] + new_ext
                new_path = os.path.join(dirpath, new_filename)
                if dry_run:
                    print(f"[預覽] {old_path} -> {new_path}")
                else:
                    try:
                        os.rename(old_path, new_path)
                        print(f"[完成] {old_path} -> {new_path}")
                        count += 1
                    except OSError as e:
                        print(f"[錯誤] {old_path}: {e}")
    print(f"共處理 {count} 個檔案")

if __name__ == '__main__':
    # 使用範例:python rename.py . .tmp .jpg --dry-run
    target_dir = sys.argv[1] if len(sys.argv) > 1 else '.'
    old_ext = sys.argv[2] if len(sys.argv) > 2 else '.tmp'
    new_ext = sys.argv[3] if len(sys.argv) > 3 else '.jpg'
    dry_run = '--dry-run' in sys.argv
    batch_rename(target_dir, old_ext, new_ext, dry_run)

使用建議

  • 先加上 --dry-run 參數預覽將要變更的檔案,確認無誤後再正式執行。
  • 程式碼會自動跳過非目標副檔名的檔案,不影響其他檔案。
  • 若檔名衝突(同目錄下已存在同名 .jpg),os.rename 會拋出錯誤,建議加入檢查邏輯或自動編號避免覆蓋。

總結

Python 的 os 模組提供了極簡潔的檔案系統操作介面,配合簡單的迴路與字串處理,即可輕鬆解決批量重命名等繁瑣任務,展現腳本語言處理系統管理事務的高效能。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved