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

Python批量重命名Excel多個工作簿的完整代碼

 更新時間:2026年07月10日 09:10:52   作者:楊利杰YJlio  
這篇文章主要為大家詳細介紹了如何使用Python批量重命名多個工作簿,通過輕松替換或刪除關(guān)鍵詞,掌握os.rename()與自動化流程,希望對大家有所幫助

1. 問題背景:為什么要批量重命名多個工作簿

本文主題是 批量重命名多個工作簿。這個案例看起來不復(fù)雜,但在真實辦公場景里非常實用,尤其適合處理一批命名不規(guī)范、帶有統(tǒng)一前綴或統(tǒng)一關(guān)鍵字的 Excel 文件。

我對這節(jié)內(nèi)容的理解是:它不是單純學(xué)習(xí)一個 os.rename() 函數(shù),而是在練習(xí)一種很基礎(chǔ)、也很關(guān)鍵的自動化思維: 先批量找到目標文件,再按照規(guī)則生成新文件名,最后統(tǒng)一執(zhí)行重命名。

這張圖展示的是本文的主問題:使用 Python 對多個 Excel 工作簿進行批量重命名。

從圖中可以看出,本文處理的對象不是某一個 Excel 表格里的單元格數(shù)據(jù),而是文件夾中的多個 Excel 文件本身。這個區(qū)別很重要:改工作表名稱屬于 Excel 內(nèi)部操作,改工作簿文件名屬于文件系統(tǒng)操作。這兩類問題的代碼思路完全不同,不能混在一起理解。

在辦公自動化里,文件名標準化是一個很容易被忽略的問題。文件名不統(tǒng)一時,后續(xù)歸檔、檢索、匯總、同步網(wǎng)盤、批量導(dǎo)入系統(tǒng)都會變麻煩。手動改幾個文件還能忍,如果是一百個、幾百個 Excel 文件,繼續(xù)靠人工就不現(xiàn)實了。

2. 適用場景:哪些情況適合用這個方法

這個案例最典型的場景,就是文件名中存在相同關(guān)鍵字,需要統(tǒng)一替換或刪除。比如業(yè)務(wù)系統(tǒng)導(dǎo)出的文件全部帶有“銷售表”,后來部門要求統(tǒng)一改成“營收表”;或者文件名中帶有“最終版”“新版”“副本”等多余文字,需要統(tǒng)一清理。

這張圖展示的是一個非常典型的批量替換文件名場景:把文件名中的“銷售表”統(tǒng)一替換成“營收表”。

從圖中能看出,批量重命名不是簡單地把所有文件改成同一個名字,而是只替換文件名中的某一段關(guān)鍵字。也就是說,原文件名中的月份、地區(qū)、編號等有效信息仍然保留,只把不符合要求的關(guān)鍵詞替換掉。

比如原來有這些文件:

銷售表_1月.xlsx
銷售表_2月.xlsx
銷售表_3月.xlsx
銷售表_4月.xlsx
銷售表_5月.xlsx

批量處理后可以變成:

營收表_1月.xlsx
營收表_2月.xlsx
營收表_3月.xlsx
營收表_4月.xlsx
營收表_5月.xlsx

推薦做法:如果只是替換文件名中的固定關(guān)鍵詞,優(yōu)先使用 replace()。這種方式簡單、直接、可讀性強,新手也容易排查。

不建議的做法:直接根據(jù)序號重新生成全部文件名。除非你非常確認原文件名沒有任何保留價值,否則容易把月份、項目名、地區(qū)名這些重要信息一起覆蓋掉。

3. 核心原理:遍歷、篩選、替換、重命名

這個案例的核心流程可以拆成四步:第一步遍歷文件夾,第二步篩選目標文件,第三步替換文件名關(guān)鍵字,第四步執(zhí)行重命名。只要這四步想清楚,代碼就不難。

這張圖展示的是整個腳本的核心執(zhí)行流程。

從圖中可以看出,真正穩(wěn)妥的批量處理,不是一上來就執(zhí)行重命名,而是先經(jīng)過篩選。尤其是 Excel 文件夾里經(jīng)常會出現(xiàn) ~$ 開頭的臨時文件,如果不跳過,就可能導(dǎo)致腳本報錯。

原理說明:os.listdir() 負責(zé)拿到文件夾中的文件列表,replace() 負責(zé)生成新文件名,os.path.join() 負責(zé)拼接完整路徑,os.rename() 負責(zé)真正執(zhí)行重命名。

這里最關(guān)鍵的判斷不是語法,而是流程順序。先篩選,再重命名;先生成新路徑,再執(zhí)行修改。這個順序不能亂。

4. 實現(xiàn)代碼:用 os 批量處理文件名

下面這段代碼是一個相對穩(wěn)妥的基礎(chǔ)版本。它不會處理非 Excel 文件,也會跳過 Excel 打開時產(chǎn)生的臨時文件。使用前只需要修改 folder_pathold_book_namenew_book_name。

import os

# 1. 需要批量重命名的文件夾路徑
folder_path = r"e:\file"

# 2. 舊關(guān)鍵字和新關(guān)鍵字
old_book_name = "銷售表"
new_book_name = "營收表"   # 如果想刪除舊關(guān)鍵字,可以寫成 ""

# 3. 遍歷文件夾中的文件
for file_name in os.listdir(folder_path):

    # 跳過 Excel 臨時文件
    if file_name.startswith("~$"):
        continue

    # 只處理 Excel 工作簿文件
    if not file_name.lower().endswith((".xlsx", ".xls", ".xlsm")):
        continue

    # 文件名中不包含舊關(guān)鍵字就跳過
    if old_book_name not in file_name:
        continue

    # 生成新文件名
    new_file_name = file_name.replace(old_book_name, new_book_name)

    # 拼接完整路徑
    old_path = os.path.join(folder_path, file_name)
    new_path = os.path.join(folder_path, new_file_name)

    # 執(zhí)行重命名
    os.rename(old_path, new_path)

    print(f"重命名完成:{file_name} -> {new_file_name}")

這段代碼的核心不是長,而是每一步都比較清楚。continue 的作用就是跳過不符合條件的文件,讓腳本只處理真正需要處理的 Excel 工作簿。

推薦做法:第一次運行前,可以先把 os.rename(old_path, new_path) 注釋掉,只打印新舊文件名,確認結(jié)果沒問題后再正式執(zhí)行。

# 先預(yù)覽,不真正改名
print(f"預(yù)覽:{file_name} -> {new_file_name}")

# 確認無誤后,再打開下面這一行
# os.rename(old_path, new_path)

風(fēng)險提醒:批量重命名屬于不可輕視的文件操作。如果規(guī)則寫錯,可能一次性改亂大量文件名。真實工作中不要直接對原始文件夾開干,先復(fù)制一份測試目錄再運行腳本。

5. 舉一反三:從改工作簿名擴展到改工作表名

這一節(jié)的基礎(chǔ)案例是批量修改工作簿文件名,但如果繼續(xù)往前走,就會遇到另一個高頻需求:文件夾中有很多 Excel 工作簿,每個工作簿里面都有一個默認工作表 Sheet1,現(xiàn)在要統(tǒng)一改成 匯總。

這張圖展示的是進階批處理思路:用 os 管文件遍歷,用 xlwings 管 Excel 內(nèi)部工作表。

從圖中可以看出,osxlwings 的職責(zé)不一樣。os 適合處理文件夾、文件名、路徑這些文件系統(tǒng)層面的事情;xlwings 更適合打開 Excel、讀取工作表、修改工作表名稱、保存工作簿。

下面是一個進階示例:批量打開文件夾中的 Excel 工作簿,把里面的 Sheet1 改成 匯總。

import os
import xlwings as xw

folder_path = r"e:\file"
old_sheet_name = "Sheet1"
new_sheet_name = "匯總"

app = xw.App(visible=False, add_book=False)

try:
    for file_name in os.listdir(folder_path):

        if file_name.startswith("~$"):
            continue

        if not file_name.lower().endswith((".xlsx", ".xls", ".xlsm")):
            continue

        full_path = os.path.join(folder_path, file_name)

        wb = app.books.open(full_path)

        sheet_names = [sheet.name for sheet in wb.sheets]

        if old_sheet_name in sheet_names:
            wb.sheets[old_sheet_name].name = new_sheet_name
            wb.save()
            print(f"{file_name}:{old_sheet_name} -> {new_sheet_name}")

        wb.close()

finally:
    app.quit()

原理說明:這段代碼比前面的文件重命名更進一步,因為它不是修改文件名,而是打開 Excel 文件并修改里面的工作表對象。所以它需要調(diào)用 Excel 相關(guān)庫,而不是只靠 os.rename()。

注意:如果目標工作簿里已經(jīng)存在名為 匯總 的工作表,直接改名可能報錯。真實使用時最好先判斷新工作表名是否已經(jīng)存在。

6. 常見問題:批量重命名最容易踩的坑

批量重命名看起來簡單,但真正容易出問題的地方并不在 os.rename() 這一句,而是在執(zhí)行前的判斷不夠嚴謹。尤其是文件被占用、臨時文件沒有過濾、目標文件名重復(fù)、路徑寫錯,這些問題都很常見。

這張圖展示的是批量重命名 Excel 工作簿時需要提前檢查的幾個關(guān)鍵點。

從圖中能看出,安全檢查至少包含四類:跳過 ~$ 臨時文件、只處理 Excel 文件、判斷文件名是否包含關(guān)鍵字、執(zhí)行前先預(yù)覽結(jié)果。這幾步看似啰嗦,但能避免很多低級事故。

坑 1:Excel 文件正在打開。如果文件正在被 Excel 占用,重命名時可能失敗。處理前最好關(guān)閉目標文件夾里的 Excel 工作簿。

坑 2:新文件名已經(jīng)存在。如果替換后的新文件名和已有文件重名,可能導(dǎo)致報錯。穩(wěn)妥寫法應(yīng)該在執(zhí)行前判斷 new_path 是否已經(jīng)存在。

if os.path.exists(new_path):
    print(f"跳過:目標文件已存在 -> {new_file_name}")
    continue

坑 3:關(guān)鍵字范圍太寬。比如你要替換“表”,結(jié)果所有帶“表”的文件名都會被處理,這種規(guī)則就太粗了。批量操作里,關(guān)鍵字越精確越安全。

我的建議:正式處理前先執(zhí)行“預(yù)覽模式”,把新舊文件名打印出來,確認沒有誤改后再放開 os.rename()

7. 效果驗證:不要只看腳本有沒有報錯

很多新手運行腳本時,只關(guān)注控制臺有沒有報錯。但對批量文件操作來說,沒有報錯不代表結(jié)果完全正確。更穩(wěn)妥的做法是運行后檢查文件夾內(nèi)容,確認文件數(shù)量、文件擴展名、命名規(guī)則是否符合預(yù)期。

我一般會按下面幾個點驗證:

第一,檢查處理前后的文件數(shù)量是否一致。如果只是重命名,文件數(shù)量不應(yīng)該減少。

第二,檢查舊關(guān)鍵字是否已經(jīng)全部替換。比如原來要替換“銷售表”,處理后文件夾中就不應(yīng)該再出現(xiàn)帶“銷售表”的目標文件。

第三,隨機打開幾個 Excel 文件,確認文件本身沒有損壞。雖然 os.rename() 正常情況下不會修改文件內(nèi)容,但如果路徑或文件狀態(tài)異常,還是要做基本驗證。

第四,把控制臺輸出保留下來。如果后續(xù)發(fā)現(xiàn)文件名不對,至少能根據(jù)日志追溯原文件名和新文件名。

print(f"處理完成:{old_path} -> {new_path}")

原理說明:文件重命名本質(zhì)上修改的是文件系統(tǒng)中的路徑名稱,不會直接改動 Excel 內(nèi)容。但這不代表它沒有風(fēng)險,因為路徑名稱本身就是后續(xù)批處理、歸檔和查找的基礎(chǔ)。

8. 總結(jié)提升:把這節(jié)變成自己的腳本模板

這一節(jié)的價值,不是記住一段固定代碼,而是掌握批量文件處理的基本框架。以后遇到批量改名、批量篩選文件、批量移動文件、批量打開 Excel 的需求,都可以從這個框架繼續(xù)擴展。

我認為這篇筆記最值得留下來的經(jīng)驗有三點。

第一, 先分清處理對象。如果是改文件名,用 os;如果是改 Excel 內(nèi)部工作表,用 xlwingsopenpyxl。對象不同,工具就不同。

第二, 批量操作必須先篩選。不要遍歷到什么就處理什么。真實辦公文件夾里可能有臨時文件、PDF、TXT、CSV、備份文件,腳本必須先判斷再執(zhí)行。

第三, 正式執(zhí)行前必須預(yù)覽。批量腳本最怕“看起來能跑,結(jié)果全改錯”。先打印新舊文件名,再正式重命名,這是最基本的安全習(xí)慣。

這類小案例看似基礎(chǔ),但如果真正練熟,就可以沉淀成自己的辦公自動化工具箱。以后遇到重復(fù)改文件名、整理報表、歸檔數(shù)據(jù)時,就不需要再手動一個個點開修改了。

以上就是Python批量重命名Excel多個工作簿的完整代碼的詳細內(nèi)容,更多關(guān)于Python重命名Excel工作簿的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python中淺復(fù)制copy與深復(fù)制deepcopy

    python中淺復(fù)制copy與深復(fù)制deepcopy

    本文主要介紹了python中淺復(fù)制copy與深復(fù)制deepcopy,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • pandas時間序列之pd.to_datetime()的實現(xiàn)

    pandas時間序列之pd.to_datetime()的實現(xiàn)

    本文主要介紹了pandas時間序列之pd.to_datetime()的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧<BR>
    2022-06-06
  • Python基于生成器迭代實現(xiàn)的八皇后問題示例

    Python基于生成器迭代實現(xiàn)的八皇后問題示例

    這篇文章主要介紹了Python基于生成器迭代實現(xiàn)的八皇后問題,簡單描述了八皇后問題,并結(jié)合實例形式分析了Python基于生成器迭代解決八皇后問題的相關(guān)操作技巧,需要的朋友可以參考下
    2018-05-05
  • 為什么說python更適合樹莓派編程

    為什么說python更適合樹莓派編程

    在本篇文章里小編給大家整理的是關(guān)于為什么說python更適合樹莓派編程的相關(guān)文章,需要的朋友們可以參考學(xué)習(xí)下。
    2020-07-07
  • Python實現(xiàn)的爬取百度文庫功能示例

    Python實現(xiàn)的爬取百度文庫功能示例

    這篇文章主要介紹了Python實現(xiàn)的爬取百度文庫功能,結(jié)合實例形式分析了Python針對百度文庫的爬取、編碼轉(zhuǎn)換、文件保存等相關(guān)操作技巧,需要的朋友可以參考下
    2019-02-02
  • python寫入Excel表格的方法詳解

    python寫入Excel表格的方法詳解

    這篇文章主要為大家詳細介紹了python寫入Excel表格的方法,使用jupyter?notebook,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • python3.3實現(xiàn)乘法表示例

    python3.3實現(xiàn)乘法表示例

    這篇文章主要介紹了python3.3實現(xiàn)乘法表示例,需要的朋友可以參考下
    2014-02-02
  • Python 2種方法求某個范圍內(nèi)的所有素數(shù)(質(zhì)數(shù))

    Python 2種方法求某個范圍內(nèi)的所有素數(shù)(質(zhì)數(shù))

    這篇文章主要介紹了Python 2種方法求某個范圍內(nèi)的所有素數(shù)(質(zhì)數(shù)),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • Python?Flask中Cookie和Session區(qū)別詳解

    Python?Flask中Cookie和Session區(qū)別詳解

    Flask是一個使用?Python?編寫的輕量級?Web?應(yīng)用框架。其?WSGI?工具箱采用?Werkzeug?,模板引擎則使用?Jinja2?。Flask使用?BSD?授權(quán)。Flask也被稱為?“microframework”?,因為它使用簡單的核心,用?extension?增加其他功能,F(xiàn)lask中Cookie和Session有什么區(qū)別呢
    2022-07-07
  • 從原理到實戰(zhàn)詳解Python中文件并發(fā)讀寫的避坑指南

    從原理到實戰(zhàn)詳解Python中文件并發(fā)讀寫的避坑指南

    這篇文章主要為大家詳細介紹了Python中文件并發(fā)讀寫的相關(guān)知識和避坑指南,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2026-01-01

最新評論

建瓯市| 赤峰市| 集安市| 永寿县| 札达县| 左贡县| 博爱县| 东台市| 汪清县| 新晃| 正安县| 江源县| 交口县| 昌江| 焉耆| 义乌市| 郓城县| 大方县| 蒲城县| 安陆市| 项城市| 陆川县| 洪江市| 九寨沟县| 凤冈县| 桦南县| 高台县| 肃宁县| 五家渠市| 从江县| 海盐县| 南通市| 万州区| 新闻| 个旧市| 北票市| 龙山县| 澜沧| 章丘市| 蒲江县| 玛纳斯县|