Go語言實戰案例-批量重命名文件

在《Go語言100個實戰案例》中的?文件與IO操作篇 - 案例17:批量重命名文件?的完整內容,適合初學者實踐如何使用 Go 操作文件系統并批量處理文件名。

🎯 案例目標

實現一個小工具,能夠批量重命名指定目錄下的所有文件,例如統一添加前綴、后綴,或按照順序編號。


🧩 應用場景

  • ? 批量重命名圖片、視頻、文檔等
  • ? 整理爬蟲下載的文件
  • ? 按規則生成項目資源命名

🧠 涉及知識點

  • ? 使用?os.ReadDir()?讀取目錄內容
  • ? 使用?os.Rename()?修改文件名
  • ? 使用?filepath.Ext()?獲取文件擴展名
  • ? 字符串拼接和格式化

💻 示例代碼:為文件添加統一前綴

package?mainimport?("fmt""os""path/filepath"
)func?main()?{dir?:=?"./testfiles"?//?目標文件夾prefix?:=?"new_"?????//?要添加的前綴//?讀取目錄下所有文件files,?err?:=?os.ReadDir(dir)if?err?!=?nil?{fmt.Println("讀取目錄失敗:",?err)return}for?_,?file?:=?range?files?{if?file.IsDir()?{continue?//?跳過子目錄}oldPath?:=?filepath.Join(dir,?file.Name())newName?:=?prefix?+?file.Name()newPath?:=?filepath.Join(dir,?newName)//?重命名文件err?:=?os.Rename(oldPath,?newPath)if?err?!=?nil?{fmt.Printf("重命名失敗:?%s?->?%s,?錯誤:?%v\n",?oldPath,?newPath,?err)}?else?{fmt.Printf("重命名成功:?%s?->?%s\n",?oldPath,?newPath)}}
}

📂 示例目錄結構(執行前)

testfiles/
├──?a.jpg
├──?b.jpg
├──?c.png

📂 執行后結果

testfiles/
├──?new_a.jpg
├──?new_b.jpg
├──?new_c.png

🛠 技術說明

函數/模塊用途說明
os.ReadDir()獲取指定路徑下的所有文件和文件夾
file.IsDir()判斷是否為文件夾
filepath.Join()拼接路徑,避免平臺兼容問題
os.Rename()執行文件重命名操作

🧪 拓展用法:添加編號重命名

newName?:=?fmt.Sprintf("img_%03d%s",?i+1,?filepath.Ext(file.Name()))

執行結果:

img_001.jpg
img_002.jpg
img_003.png

📌 拓展練習

  • ? 將所有文件名統一為小寫
  • ? 移除文件名中的特殊字符
  • ? 支持同時添加前綴和后綴
  • ? 將文件按類型重命名,例如:photo_001.jpgdoc_001.pdf

? 小結

本案例讓你掌握了如何讀取目錄文件并批量重命名,這一技能在數據清洗、媒體資源管理中非常實用。通過靈活控制文件名規則,你可以輕松構建批處理工具。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/92380.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/92380.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/92380.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于單片機非接觸紅外測溫系統

傳送門 👉👉👉👉其他作品題目速選一覽表 👉👉👉👉其他作品題目功能速覽 概述 本設計實現了一種基于單片機的非接觸式紅外測溫系統,適用于快速、安全測量物體表面溫…

Python 入門手札:從 0 到會--第十天Python常用的第三方庫Numpy,Pandas,Matplotlib

目錄 一、Numpy 1.NumPy 是什么? 1.1安裝numpy 1.2 導入numpy模塊 2.NumPy 的核心:ndarray 2.1 什么是 ndarray? 2.2 ndarray 的創建方式 2.3 常見屬性(用于查看數組結構) 2.4 ndarray 的切片與索引 2.5 ndarr…

mysql 性能優化之Explain講解

EXPLAIN是 MySQL 中用于分析查詢執行計劃的重要工具,通過它可以查看查詢如何使用索引、掃描數據的方式以及表連接順序等信息,從而找出性能瓶頸。以下是關于EXPLAIN的詳細介紹和實戰指南:1. EXPLAIN 基本用法在SELECT、INSERT、UPDATE、DELETE…

Redis 連接:深度解析與最佳實踐

Redis 連接:深度解析與最佳實踐 引言 Redis 作為一款高性能的內存數據結構存儲系統,在當今的互聯網應用中扮演著越來越重要的角色。高效的 Redis 連接管理對于保證系統的穩定性和性能至關重要。本文將深入探討 Redis 連接的原理、配置以及最佳實踐,幫助讀者更好地理解和應…

C語言---VSCODE的C語言環境搭建

文章目錄資源下載配置環境驗證資源下載 站內下載 配置環境 解壓壓縮包,復制以下文件的路徑 打開主頁搜索系統環境變量 點擊環境變量 選擇系統變量中的Path,點擊編輯 在最后面添加路徑。 添加完成記得關機重啟。 驗證 重啟電腦之后打開在Power…

ojdbc對應jdk版本附下載地址(截止20250722)

可以從Oracle官網查看, JDBC and UCP Downloads page

Redis為什么被設計成是單線程的?

Redis單線程模型解析 當我們說Redis是單線程時,特指"其網絡IO和鍵值對讀寫操作由單個線程完成"。實際上,Redis僅網絡請求模塊和數據操作模塊采用單線程設計,而持久化存儲、集群支持等其他模塊都采用了多線程架構。 事實上,Redis從4.0版本就開始對部分命令實現了…

基礎流程圖

一、常用符號及定義二、 畫圖基礎規則1、從上至下,從左至右流向順序。2、開始符號只能有一個出口。3、進程符號不做校驗邏輯。4、相同流程圖,符號大小應為一致。5、引用流程,不重復繪制。6、路徑符號盡量避免交叉重疊。7、同一路徑&#xff0…

C# 結構體

目錄 1.如何定義一個結構體(struct 關鍵字) 2.如何使用一個結構體 3.如何修改一個數據 4.如何讓去訪問一個學生的信息 5、結構體數組 練習 1.如何定義一個結構體(struct 關鍵字) C#中public 、private、protect的區別 結構…

在Python中操作Word

生成請假條1.準備一個文件“template.docx”,內容如下。2.安裝docxtpl庫。pip install docxtpl3.執行代碼,替換字典內容。from docxtpl import DocxTemplate# 讀取定義模板文件 tpl DocxTemplate(template.docx) # 創建子文檔 sd tpl.new_subdoc() # 添…

網絡協議(四)網絡層 路由協議

在網絡層及網絡層之上使用IP地址,IP地址放在IP數據報的首部,而MAC地址放在MAC幀的首部。通過數據封裝,把IP數據報分組封裝為MAC幀。 由于路由器的隔離,IP網絡中無法通過廣播MAC地址來完成跨網絡的尋址,因此在網絡層中只…

(后者可以節約內存/GPU顯存)Pytorch中求逆torch.inverse和解線性方程組torch.linalg.solve有什么關系

假設我們要求A的逆矩陣,正常情況下我們使用如下命令: torch.inverse(A)但是本人發現,這個函數還挺消耗顯存的。想到求逆矩陣和求線性方程組有很大關系。從而可以使用torch.linalg.solve來求解逆矩陣,關鍵是其顯存消耗小。 求解逆矩…

esp32 idf 使用http訪問json直接拼接content_length = -1

CMakeLists.txt添加網絡請求庫 REQUIRES esp_http_client效果圖D (14235) HTTP_CLIENT: content_length -1 需要直接拼接content_length才能打印#include <stdio.h> #include <string.h> #include "esp_log.h" #include "esp_system.h" #inc…

[Github】下載使用github上的源代碼

一、安裝Anoconda 二、安裝 Git &#xff08;1&#xff09;安裝 方法 1&#xff1a;通過 Git 官網安裝? 下載 Git for Windows&#xff1a;https://git-scm.com/download/win運行安裝程序&#xff0c;??確保勾選 "Add Git to PATH"??&#xff08;重要&#…

Java 邂逅 WebSocket:解鎖實時通信的無限可能?

在當今的互聯網時代&#xff0c;實時通信已經成為許多應用不可或缺的功能。從在線聊天工具到實時游戲互動&#xff0c;從股票行情推送再到物聯網數據傳輸&#xff0c;都對實時性有著極高的要求。而在 Java 技術棧中&#xff0c;WebSocket 技術的出現&#xff0c;為開發者打開了…

MySQL 核心知識點梳理(5)

目錄 事務 MySQL事務的四大特性 ACID 原子性 持久性 隔離性 事務的隔離級別 讀未提交 讀已提交 可重復讀 串行化 事務的隔離級別如何實現 MVCC 版本鏈 READVIEW 高可用 MySQL數據庫的讀寫分離 主從復制 主從同步延遲怎么處理 分庫策略 水平分庫分表的策略…

借助AI學習開源代碼git0.7之六write-tree

借助AI學習開源代碼git0.7之六write-tree write-tree.c 的作用是根據當前的索引&#xff08;cache&#xff09;內容創建一個樹&#xff08;tree&#xff09;對象&#xff0c;并將其寫入Git的對象數據庫。 樹對象代表了項目在某個時間點的目錄結構。 代碼的主要邏輯&#xff1a;…

開源 python 應用 開發(八)圖片比對

最近有個項目需要做視覺自動化處理的工具&#xff0c;最后選用的軟件為python&#xff0c;剛好這個機會進行系統學習。短時間學習&#xff0c;需要快速開發&#xff0c;所以記錄要點步驟&#xff0c;防止忘記。 鏈接&#xff1a; 開源 python 應用 開發&#xff08;一&#xf…

SeaTunnel 云倉連接器使用指南 | AI 助手解讀系列

最近體驗了一下 Deepwiki 的 AI 文檔生成功能&#xff0c;本文展示其自動生成的《SeaTunnel 云端數據倉庫連接器》文檔內容&#xff0c;歡迎大家一起“挑刺捉蟲”&#xff0c;看看 AI 寫技術文檔到底靠不靠譜&#xff1f; 本文檔介紹了 Apache SeaTunnel 的云數據倉庫連接器&a…

每日算法刷題Day51:7.21:leetcode 棧6道題,用時1h40min

二.進階 1.套路 2.題目描述 1.給你一個字符串 s 。它可能包含任意數量的 * 字符。你的任務是刪除所有的 * 字符。 當字符串還存在至少一個 * 字符時&#xff0c;你可以執行以下操作&#xff1a; 刪除最左邊的 * 字符&#xff0c;同時刪除該星號字符左邊一個字典序 最小的字…