最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實現文件批量重命名器

 更新時間:2025年05月25日 14:22:01   作者:笨笨輕松熊  
在日常工作和學習中,我們經常需要對大量文件進行重命名操作,本文將介紹一個使用Python開發(fā)的文件批量重命名工具,提供了多種重命名模式,有需要的小伙伴可以了解下

前言

在日常工作和學習中,我們經常需要對大量文件進行重命名操作。手動一個個修改既耗時又容易出錯,特別是當文件數量較多時。本文將介紹一個使用Python開發(fā)的文件批量重命名工具,它提供了多種重命名模式,可以大大提高文件管理效率。

功能特點

多種重命名模式:前綴添加、后綴添加、字符串替換、序列號命名

交互式操作界面:清晰的提示和引導

安全機制:操作前確認、沖突檢測、錯誤處理

靈活配置:可自定義序列號格式、起始值和分隔符

模塊化設計

本工具采用模塊化設計,將不同功能拆分為獨立函數,提高代碼可讀性和可維護性。下面我們來逐一了解各個模塊的實現。

1.目錄路徑獲取模塊

import os


def get_directory():
    """獲取用戶輸入的有效目錄路徑"""
    while True:
        dir_path = input("請輸入要處理的目錄路徑:").strip()
        if os.path.isdir(dir_path):
            return os.path.normpath(dir_path)
        print("× 目錄不存在,請重新輸入")

2.文件列表獲取模塊

import os

def list_files(dir_path):
    """列出目錄中的所有文件并返回列表"""
    files = [f for f in sorted(os.listdir(dir_path))
             if os.path.isfile(os.path.join(dir_path, f))]

    print("\n目錄文件列表:")
    for idx, f in enumerate(files, 1):
        print(f"{idx:02d}. {f}")
    return files

3.重命名模式選擇模塊

def get_rename_mode():
    """獲取用戶選擇的命名模式"""
    print("\n請選擇重命名模式:")
    print("1. 添加前綴\t2. 添加后綴")
    print("3. 替換字符串\t4. 序列號")
    while True:
        mode = input("請輸入選項 (1-4):").strip()
        if mode in {'1', '2', '3', '4'}:
            return mode
        print("× 無效輸入,請重新選擇")

4.序列號參數配置模塊

def get_sequence_params():
    """獲取序列號模式參數"""
    print("\n序列號模式參數設置:")
    try:
        start = int(input("起始數字 (默認1):") or 1)
        digits = int(input("位數 (默認3):") or 3)
        sep = input("分隔符 (默認_):") or "_"
        return start, digits, sep
    except ValueError:
        print("! 輸入無效,使用默認設置:起始=1,位數=3,分隔符=_")
        return 1, 3, "_"

完整代碼實現

下面是整合了所有模塊的完整代碼實現:

import os


def get_directory():
    """獲取用戶輸入的有效目錄路徑"""
    while True:
        dir_path = input("請輸入要處理的目錄路徑:").strip()
        if os.path.isdir(dir_path):
            return os.path.normpath(dir_path)
        print("× 目錄不存在,請重新輸入")


def list_files(dir_path):
    """列出目錄中的所有文件并返回列表"""
    files = [f for f in sorted(os.listdir(dir_path))
             if os.path.isfile(os.path.join(dir_path, f))]

    print("\n目錄文件列表:")
    for idx, f in enumerate(files, 1):
        print(f"{idx:02d}. {f}")
    return files


def get_rename_mode():
    """獲取用戶選擇的命名模式"""
    print("\n請選擇重命名模式:")
    print("1. 添加前綴\t2. 添加后綴")
    print("3. 替換字符串\t4. 序列號")
    while True:
        mode = input("請輸入選項 (1-4):").strip()
        if mode in {'1', '2', '3', '4'}:
            return mode
        print("× 無效輸入,請重新選擇")


def get_sequence_params():
    """獲取序列號模式參數"""
    print("\n序列號模式參數設置:")
    try:
        start = int(input("起始數字 (默認1):") or 1)
        digits = int(input("位數 (默認3):") or 3)
        sep = input("分隔符 (默認_):") or "_"
        return start, digits, sep
    except ValueError:
        print("! 輸入無效,使用默認設置:起始=1,位數=3,分隔符=_")
        return 1, 3, "_"


def main():
    # 獲取目錄路徑
    dir_path = get_directory()

    # 獲取文件列表
    files = list_files(dir_path)
    if not files:
        print("! 該目錄沒有可操作文件")
        return

    # 確認操作
    if input("\n是否繼續(xù)操作?(y/n) ").lower() != 'y':
        print("操作已取消")
        return

    # 獲取重命名模式
    mode = get_rename_mode()

    # 獲取模式參數
    params = {}
    if mode == '1':
        params['prefix'] = input("\n請輸入要添加的前綴:")
    elif mode == '2':
        params['suffix'] = input("\n請輸入要添加的后綴:")
    elif mode == '3':
        params['old'] = input("\n請輸入要替換的字符串:")
        params['new'] = input("請輸入替換后的新字符串:")
    elif mode == '4':
        params['start'], params['digits'], params['sep'] = get_sequence_params()

    # 二次確認
    if input("\n!! 確認執(zhí)行重命名操作?(y/n) ").lower() != 'y':
        print("操作已取消")
        return

    # 執(zhí)行重命名
    counter = 0
    current_num = params.get('start', 0)

    for filename in files:
        # 跳過隱藏文件(可選)
        if filename.startswith('.'):
            continue

        # 分割文件名和擴展名
        file_path = os.path.join(dir_path, filename)
        base, ext = os.path.splitext(filename)
        new_base = base

        # 根據模式生成新文件名
        if mode == '1':
            new_base = f"{params['prefix']}{base}"
        elif mode == '2':
            new_base = f"{base}{params['suffix']}"
        elif mode == '3':
            new_base = base.replace(params['old'], params['new'])
        elif mode == '4':
            num_format = f"{current_num:0{params['digits']}}d"
            new_base = f"{num_format}{params['sep']}{base}"
            current_num += 1

        new_name = f"{new_base}{ext}"
        new_path = os.path.join(dir_path, new_name)

        # 跳過未修改的情況
        if new_name == filename:
            continue

        # 執(zhí)行重命名
        try:
            if not os.path.exists(new_path):
                os.rename(file_path, new_path)
                print(f"√ {filename} → {new_name}")
                counter += 1
            else:
                print(f"! 沖突:{new_name} 已存在")
        except Exception as e:
            print(f"× 錯誤:重命名 {filename} 失敗 - {str(e)}")

    print(f"\n操作完成,成功重命名 {counter}/{len(files)} 個文件")


if __name__ == "__main__":
    print("=== 文件批量重命名工具 ===")
    main()

代碼解析

核心設計思路

用戶體驗優(yōu)先:

  • 清晰的提示信息和錯誤反饋
  • 操作前確認機制,防止誤操作
  • 列表顯示處理文件,讓用戶了解操作對象

安全性考慮:

  • 檢測目標文件是否存在,避免覆蓋
  • 異常捕獲處理,確保程序穩(wěn)定運行
  • 操作結果明確展示,方便用戶核對

功能模塊化:

  • 每個功能獨立封裝為函數
  • 清晰的函數命名和注釋
  • 參數傳遞而非全局變量

技術要點

1.路徑處理:

  • 使用os.path.isdir()驗證目錄有效性
  • 使用os.path.normpath()標準化路徑格式
  • 使用os.path.join()構建完整文件路徑
  • 使用os.path.splitext()分離文件名和擴展名

2.列表推導式:

  • [f for f in sorted(os.listdir(dir_path)) if os.path.isfile(os.path.join(dir_path, f))]
  • 一行代碼實現文件過濾和排序

3.字符串格式化:

  • f-string實現動態(tài)字符串拼接
  • 使用{current_num:0{params['digits']}}d實現動態(tài)寬度的數字格式化

4.輸入驗證與默認值:

  • 使用input(...) or default_value提供默認值
  • 使用集合{'1', '2', '3', '4'}高效驗證輸入選項

進階改進方向

圖形界面:添加GUI界面,提升用戶體驗

正則表達式支持:增加正則表達式匹配和替換功能

預覽功能:在執(zhí)行前預覽重命名結果

撤銷功能:添加操作日志和撤銷功能

批處理模式:支持從配置文件讀取參數,實現無人工干預的批處理

遞歸處理:支持遞歸處理子目錄中的文件

到此這篇關于Python實現文件批量重命名器的文章就介紹到這了,更多相關Python重命名內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python進階之列表推導與生成器表達式詳解

    Python進階之列表推導與生成器表達式詳解

    這篇文章主要為大家詳細介紹了Python中列表推導與生成器表達式的相關知識,文中的示例代碼講解詳細,具有一定的參考價值,需要的可以參考一下
    2023-04-04
  • Python使用MD5加密字符串示例

    Python使用MD5加密字符串示例

    這篇文章主要介紹了Python使用MD5加密字符串示例,對一些可能出現的錯誤點上本文也給出提醒,需要的朋友可以參考下
    2014-08-08
  • opencv實現圖像旋轉效果

    opencv實現圖像旋轉效果

    這篇文章主要為大家詳細介紹了opencv實現圖像旋轉效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • python防止隨意修改類屬性的實現方法

    python防止隨意修改類屬性的實現方法

    這篇文章主要介紹了python防止隨意修改類屬性的實現方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • python 追蹤except信息方式

    python 追蹤except信息方式

    這篇文章主要介紹了python 追蹤except信息方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • django和vue實現數據交互的方法

    django和vue實現數據交互的方法

    今天小編就為大家分享一篇django和vue實現數據交互的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • 新一代python包管理軟件mamba的使用

    新一代python包管理軟件mamba的使用

    新一代python的包管理軟件mambaMamba 是一個高性能的跨平臺包管理器,用于替代和擴展 Conda,采用 C++ 重構,實現多線程的倉庫數據和包文件并行下載,大幅提升依賴解析速度
    2025-06-06
  • Python優(yōu)秀開源項目Rich源碼解析的流程分析

    Python優(yōu)秀開源項目Rich源碼解析的流程分析

    這篇文章主要介紹了Python優(yōu)秀開源項目Rich源碼解析,本文通過實例圖文相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • python讀取word文檔,插入mysql數據庫的示例代碼

    python讀取word文檔,插入mysql數據庫的示例代碼

    今天小編就為大家分享一篇python讀取word文檔,插入mysql數據庫的示例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • 舉例講解Python中metaclass元類的創(chuàng)建與使用

    舉例講解Python中metaclass元類的創(chuàng)建與使用

    在Python中我們用type函數可以動態(tài)地創(chuàng)建一個元類,同樣也可以用__metaclass__屬性來指定一個元類,接下來我們就來具體舉例講解Python中metaclass元類的創(chuàng)建與使用
    2016-06-06

最新評論

呼玛县| 平安县| 上虞市| 朝阳县| 射洪县| 轮台县| 黔西县| 浪卡子县| 遂昌县| 宝山区| 罗江县| 贵德县| 通许县| 绥德县| 邵东县| 淮滨县| 新郑市| 民县| 同仁县| 宁津县| 高安市| 台北市| 普兰县| 惠州市| 明溪县| 肥东县| 和平县| 祁阳县| 鹤岗市| 宜黄县| 潼南县| 肃南| 遵义县| 沅江市| 平塘县| 海原县| 西城区| 舞钢市| 家居| 清徐县| 大石桥市|