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

Python實現(xiàn)文件批量重命名器

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

前言

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

功能特點

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

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

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

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

模塊化設(shè)計

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

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.序列號參數(shù)配置模塊

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

完整代碼實現(xiàn)

下面是整合了所有模塊的完整代碼實現(xiàn):

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():
    """獲取序列號模式參數(shù)"""
    print("\n序列號模式參數(shù)設(shè)置:")
    try:
        start = int(input("起始數(shù)字 (默認1):") or 1)
        digits = int(input("位數(shù) (默認3):") or 3)
        sep = input("分隔符 (默認_):") or "_"
        return start, digits, sep
    except ValueError:
        print("! 輸入無效,使用默認設(shè)置:起始=1,位數(shù)=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()

    # 獲取模式參數(shù)
    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

        # 根據(jù)模式生成新文件名
        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()

代碼解析

核心設(shè)計思路

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

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

安全性考慮:

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

功能模塊化:

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

技術(shù)要點

1.路徑處理:

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

2.列表推導式:

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

3.字符串格式化:

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

4.輸入驗證與默認值:

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

進階改進方向

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

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

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

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

批處理模式:支持從配置文件讀取參數(shù),實現(xiàn)無人工干預的批處理

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

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

相關(guān)文章

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

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

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

    Python使用MD5加密字符串示例

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

    opencv實現(xiàn)圖像旋轉(zhuǎn)效果

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

    python防止隨意修改類屬性的實現(xiàn)方法

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

    python 追蹤except信息方式

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

    django和vue實現(xiàn)數(shù)據(jù)交互的方法

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

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

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

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

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

    python讀取word文檔,插入mysql數(shù)據(jù)庫的示例代碼

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

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

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

最新評論

临潭县| 农安县| 综艺| 玉山县| 延边| 贵溪市| 海南省| 芜湖市| 绍兴市| 北川| 英德市| 金乡县| 海晏县| 海晏县| 青冈县| 泰顺县| 九龙县| 普洱| 福建省| 南昌市| 皮山县| 延长县| 邹平县| 梓潼县| 湘阴县| 马龙县| 顺义区| 玉田县| 曲水县| 宜宾市| 自贡市| 来安县| 寻甸| 当阳市| 马鞍山市| 江西省| 呼图壁县| 台江县| 高邮市| 谢通门县| 青铜峡市|