欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

利用Python實現(xiàn)文檔批量重命名

 更新時間:2025年02月27日 09:51:54   作者:fufufunny  
日常工作中總會遇到一些需要收集文件的情況,但往往最后收集回來的文件名稱會五花八門,下面小編就來為大家講講如何使用Python實現(xiàn)批量重命名操作吧

日常工作中總會遇到一些需要收集文件的情況,即便在收集前千叮嚀萬囑咐,告知大家文件命名規(guī)則為 “編號-項目名稱”,可最后收集回來的文件,名稱依舊五花八門。有的使用橫杠作為分隔符,有的卻用下劃線;編號錯誤的情況時有發(fā)生,甚至連項目名稱也寫錯,這無疑給后續(xù)的文件整理和數(shù)據(jù)分析工作帶來了極大的困擾。

比如,我們有一份正確的編號和項目名稱對應關系的Excel表格,內容如下:

編號項目名稱
250211蘋果
250212香蕉
250216桃子

按照規(guī)范,收集到的文件命名應該是 “250211-蘋果.docx”、“250212-香蕉.docx”、“250216-桃子.docx” 。但現(xiàn)實總是很殘酷,實際收集到的文件卻是 “250211_蘋果.docx”(分隔符錯誤)、“2502122-香蕉.docx”(編號錯誤)、“250216-橘子.docx”(項目名稱錯誤)。面對如此混亂的文件命名,人工逐一修改不僅耗時費力,還容易出錯,這時我們急需工具進行批量重命名。Python作為強大的編程語言,能夠高效解決這類問題,接下來就讓我們看看如何通過Python實現(xiàn)批量重命名操作。

1. 需求分析

面對這些混亂的文件命名,我們需要解決以下關鍵問題:

統(tǒng)一分隔符: 將所有文件中不同的分隔符,如橫杠、下劃線等,全部替換為指定的橫杠分隔符。

檢查編號錯誤: 以Excel表格中的編號為基準,檢查文件名中的編號是否有錯誤,如出現(xiàn)編號重復或編號不在Excel中則提醒人工檢查。

糾正項目名稱: 根據(jù)Excel表格中的映射關系,把錯誤的項目名稱替換為正確的名稱。

2. 安裝依賴庫

為達成上述功能,我們會運用Python的os庫處理文件操作,re庫進行正則表達式匹配與字符串替換,pandas庫讀取Excel文件中的映射關系。

在開始編寫代碼前,要確保已經(jīng)安裝了pandas庫。若未安裝,可通過以下命令進行安裝:

pip install pandas

3. 代碼實現(xiàn)

以下代碼首先讀取Excel文件中的編號與項目名稱對應關系,然后遍歷當前目錄下的所有文件。對于每個文件,先統(tǒng)一分隔符,再檢查編號是否正確,最后根據(jù)Excel中的映射關系糾正項目名稱,并完成文件的重命名操作。在執(zhí)行過程中,對于出現(xiàn)錯誤的文件,會給出相應的提示信息,方便人工進行檢查和處理。

3.1 rename.py

import os
import pandas as pd
import re


def rename_files(excel_path, old_files_path, new_files_path):
    # 獲取當前腳本所在目錄
    parent = os.path.dirname(os.path.realpath(__file__))
    # 構建 Excel 文件的完整路徑
    excel_path = os.path.join(parent, excel_path)
    # 構建待重命名文件所在目錄的完整路徑
    old_files_path = os.path.join(parent, old_files_path)
    # 構建重命名后文件存放目錄的完整路徑
    new_files_path = os.path.join(parent, new_files_path)
    # 檢查 Excel 文件是否存在
    try:
        df = pd.read_excel(excel_path)
    except FileNotFoundError:
        print(f"未找到 Excel 文件: {excel_path}")
        return
    # 檢查待重命名文件目錄是否存在
    if not os.path.exists(old_files_path):
        print(f"待重命名文件目錄 {old_files_path} 不存在。")
        return
    # 檢查重命名后文件存放目錄是否存在,若不存在則創(chuàng)建
    if not os.path.exists(new_files_path):
        os.makedirs(new_files_path)
    # 將編號列轉換為字符串格式
    df["編號"] = df["編號"].astype(str)
    # 將編號和項目名稱轉換為字典
    id_name_dict = dict(zip(df["編號"], df["項目名稱"]))
    # 獲取待重命名目錄下所有文件
    file_list = os.listdir(old_files_path)
    for file in file_list:
        file_path = os.path.join(old_files_path, file)
        if os.path.isfile(file_path):
            # 分離文件名和擴展名
            file_name, file_extension = os.path.splitext(file)
            # 檢查并替換分隔符
            new_file_name = re.sub(r"[_/\\]", "-", file_name)
            parts = new_file_name.split("-")
            if len(parts) != 2:
                print(f"文件 {file} 命名格式錯誤,無法解析。")
                continue
            file_id, project_name = parts[0], parts[1]
            # 檢查編號是否正確
            if file_id not in id_name_dict.keys():
                print(f"文件 {file} 中的編號 {file_id} 錯誤,請人工檢查。")
                continue
            # 糾正項目名稱
            correct_project_name = id_name_dict[file_id]
            if project_name != correct_project_name:
                new_file_name = f"{file_id}-{correct_project_name}"
            new_file = new_file_name + file_extension
            new_file_path = os.path.join(new_files_path, new_file)
            # 重命名并移動文件
            try:
                os.rename(file_path, new_file_path)
            except FileExistsError:
                print(f"文件 {new_file} 已存在于 {new_files_path},無法重命名 {file}。")


# 示例調用
if __name__ == "__main__":
    rename_files("example.xlsx", "old_files", "new_files")

3.2 代碼說明

1. 函數(shù)定義與路徑處理:

  • rename_files 函數(shù)接收三個參數(shù):excel_path(Excel文件路徑)、old_files_path(待重命名文件目錄路徑)、new_files_path(重命名后文件存放目錄路徑)。
  • 通過 os.path.dirname(os.path.realpath(__file__)) 獲取當前腳本所在目錄,再用 os.path.join 拼接路徑,確保跨平臺兼容性。

2. 文件與目錄檢查:

  • 嘗試讀取Excel文件,若文件不存在,捕獲異常并提示,終止函數(shù)。
  • 檢查待重命名文件目錄是否存在,不存在則提示并終止。
  • 檢查重命名后文件存放目錄,不存在則創(chuàng)建。

3. 數(shù)據(jù)處理與字典構建:

  • 將 df["編號"] 列轉為字符串類型,方便與文件名編號比較。
  • 利用 dict(zip(df["編號"], df["項目名稱"])) 構建編號與項目名稱的字典映射。

4. 文件遍歷與重命名:

  • 獲取待重命名目錄下所有文件。
  • 對每個文件,檢查是否為文件,分離文件名與擴展名。
  • 用正則表達式替換分隔符,按橫杠拆分文件名。
  • 檢查編號是否在字典中,不在則提示編號錯誤并跳過。
  • 對比項目名稱,不一致則糾正,構建新文件名。
  • 嘗試重命名并移動文件,若目標文件已存在,捕獲異常并提示。

4. 運行示例

假設文件結構如下:

project/
├── rename.py
├── example.xlsx
├── old_files/
│   ├── 250211_蘋果.docx
│   ├── 2502122-香蕉.docx
│   ├── 250216-橘子.docx
└── new_files/ (初始為空)

其中 example.xlsx 內容如下:

編號項目名稱
250211蘋果
250212香蕉
250216桃子

在命令行進入 project 目錄,執(zhí)行 python rename.py 后,new_files 目錄下會生成:

new_files/
├── 250211-蘋果.docx
├── 250216-桃子.docx

同時,控制臺輸出:

文件 2502122_香蕉.docx 中的編號 2502122 錯誤,請人工檢查。

250211_蘋果.docx 因分隔符錯誤,重命名為 250211-蘋果.docx 并移動到 new_files 目錄;2502122-香蕉.docx 因編號錯誤未重命名移動;250216-橘子.docx 因項目名稱錯誤,重命名為 250216 - 桃子.docx 并移動到 new_files 目錄。

5. 注意事項

備份文件: 在執(zhí)行批量重命名之前,務必對重要文件進行備份,防止因代碼錯誤導致文件丟失或損壞。

測試代碼: 在處理大量文件之前,先在少量樣本文件上測試代碼,確保重命名規(guī)則符合預期。

路徑兼容性: 不同操作系統(tǒng)路徑分隔符不同(Windows 下是 \,Linux 和 macOS 下是 /),建議使用 os.path.join 拼接路徑,增強跨平臺兼容性。

xlsx 文件格式: 確保xlsx文件包含 “編號” 和 “項目名稱” 兩列,數(shù)據(jù)準確無誤,編號作為唯一標識不能重復。

文件權限: 運行代碼的用戶需對 old_files_path 和 new_files_path 目錄有讀寫權限,否則可能導致運行錯誤。

編碼問題: 若Excel文件或文件名含非ASCII字符,注意編碼問題,確保讀取和處理文件時編碼正確,避免亂碼。

6. 總結

通過 Python 實現(xiàn)的批量重命名功能,能夠高效地解決工作中文件命名不一致的問題。無論遇到多么復雜的命名混亂情況,只要合理運用Python的庫和函數(shù),都能輕松應對。

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

相關文章

  • Anaconda+pycharm安裝及環(huán)境配置全過程

    Anaconda+pycharm安裝及環(huán)境配置全過程

    在使用pyCharm進行開發(fā)時,需要用到Anaconda創(chuàng)建的環(huán)境,下面這篇文章主要給大家介紹了關于Anaconda+pycharm安裝及環(huán)境配置的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-09-09
  • Python常用正則表達式符號淺析

    Python常用正則表達式符號淺析

    這篇文章主要介紹了Python常用正則表達式符號,非常實用,需要的朋友可以參考下
    2014-08-08
  • python CMD命令行傳參實現(xiàn)方法(argparse、click、fire)

    python CMD命令行傳參實現(xiàn)方法(argparse、click、fire)

    這篇文章主要介紹了python CMD命令行傳參實現(xiàn)方法(argparse、click、fire),本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • python實現(xiàn)梯度下降法

    python實現(xiàn)梯度下降法

    這篇文章主要為大家詳細介紹了python實現(xiàn)梯度下降法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • 用Python實現(xiàn)屏幕截圖詳解

    用Python實現(xiàn)屏幕截圖詳解

    大家好,本篇文章主要講的是用Python實現(xiàn)屏幕截圖詳解,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • Python的Django框架中settings文件的部署建議

    Python的Django框架中settings文件的部署建議

    這篇文章主要介紹了Python的Django框架中settings文件的部署建議,包括對local_settings的弊病的一些簡單分析,需要的朋友可以參考下
    2015-05-05
  • 使用python+pygame實現(xiàn)中秋節(jié)動畫效果

    使用python+pygame實現(xiàn)中秋節(jié)動畫效果

    馬上就要中秋節(jié)了,使用python可以實現(xiàn)中秋節(jié)動畫效果,包括月亮、兔子和煙花嗎?當然是可以的,那該如何實現(xiàn)呢?這篇文章我們主要使用pygame來實現(xiàn),文中有詳細的代碼示例供大家參考,需要的朋友可以參考下
    2023-09-09
  • python DataFrame 修改列的順序實例

    python DataFrame 修改列的順序實例

    下面小編就為大家分享一篇python DataFrame 修改列的順序實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • 利用Python命令行傳遞實例化對象的方法

    利用Python命令行傳遞實例化對象的方法

    最近在工作中遇到了一個問題,需要接收啟動腳本傳遞過來的實例化后的對象,通過在網(wǎng)上查找資料發(fā)現(xiàn)了兩個方法,文中通過實例代碼就給大家詳細介紹了這兩種方法,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-11-11
  • Django數(shù)據(jù)庫操作之save與update的使用

    Django數(shù)據(jù)庫操作之save與update的使用

    這篇文章主要介紹了Django數(shù)據(jù)庫操作之save與update的使用,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04

最新評論