拿檔名 如何批量修改檔名

2021-10-25 13:12:07 字數 2001 閱讀 6843

在工作和生活中,我們經常需要將許多檔案命名為固定格式,如果需要重新命名的檔案數量龐大,那重新命名將會變成一件非常枯燥繁瑣費時的工作,今天在這裡分享乙個批量修改檔名的**,希望對大家有所幫助,就算是數百個檔名,也就幾秒鐘完事。

先貼上**(文字框內下滑可以複製完整內容哦):

address = r'd:\中銀國際實習\renamesample' #目標資料夾位址

for root, dirs, files in os.walk(address): #遍歷目標資料夾中檔案

for i in range(len(files)): #範圍為資料夾中檔案個數

filename = files[i] #給filename賦值用於之後修改

#print(filename)  去掉井號就可以在執行過程中看到被讀取的excel檔案

new_name = filename[-13:-5] + filename[:-15] + ".xlsx"

這裡只是把檔案名字最後8位移動到原名稱開頭,所以只涉及對具體字元的提取。如果有其他複雜要求的可以用具正規表示式來解決,但在此不做介紹。

os.rename(address + "\\" + filename,address+ "\\" + new_name)

#用rename函式用新名字替換舊名字

#print(new_name) #去掉井字就可以看到新名字

print('d\'est fini, pas de souci la!(跑完了,沒問題啦!)')

#這個只是為了告訴你程式跑完了,沒其他意思。

改名前

改名後ghijklmn.xlsx變成了ghijklmnabcd.xlsx的原理看明白了嗎(filename[-13:-5]+filename[:-15]),如果你原本就知道字元定位的規律那很簡單,不過就算你之前不知道現在也應該了解了,即:

[開始定位符,結束定位符],「開始定位符」對應的字元會被選上,而「結束定位符」不會被選入。

拿上面的例子試一下?!

**解析

參考**:

這小段**的核心函式為:

os.walk(top[, topdown=true[,οnerrοr=none[, followlinks=false]]])

其詳細引數如下:

top--是你所要遍歷的目錄的位址, 返回的是乙個三元組(root,dirs,files)。

root--所指的是當前正在遍歷的這個資料夾的本身的位址

dirs--是乙個 list ,內容是該資料夾中所有的目錄的名字(不包括子目錄)

files--同樣是 list , 內容是該資料夾中所有的檔案(不包括子目錄)

topdown--可選,為 true,則優先遍歷 top 目錄,否則優先遍歷 top 的子目錄(預設為開啟)。如果 topdown 引數為 true,walk 會遍歷top資料夾,與top 資料夾中每乙個子目錄。

onerror--可選,需要乙個 callable 物件,當 walk 需要異常時,會呼叫。

followlinks--可選,如果為 true,則會遍歷目錄下的快捷方式(linux 下是軟連線 symbolic link )實際所指的目錄(預設關閉),如果為 false,則優先遍歷 top 的子目錄。

檔名 EXCEL批量修改檔名

場景一 面臨問題 將圖紙匯出為pdf格式時,因首字母按拼音排序,導致圖紙順序錯亂,需要在檔名前插入編號,以使檔案按照理想狀態排序。如下圖,預設的 按名稱排序 狀態為 節點 立面 平面 而理想的狀態為 平面 立面 節點 解決辦法 儲存,關閉文字文件。將字尾名 txt 修改為 bat 雙擊執行 提取檔名...

批量修改檔名

10.1整理女兒 的時候,發現從老婆手機拍出來的 檔名不帶拍照日期的,這樣有個問題,就是那麼積累了2年的 無法顯眼的知道是什麼時候拍的,而且在轉移 的時候,容易把修改日期更改掉,這樣就會丟失拍照的日期,對後續回憶 的時候就不知道當時女兒多大。如果手工修改,那麼幾千張 修改工作量實在太大,以修改一張 ...

批量修改檔名

批量修改檔案字尾 include include include includeint main else char newname 1024 fgets oldname,1024,fp int length strlen oldname 把讀到字串最後的回車 換成 0 表示字串的結束標示 oldn...