1. 程式人生 > >python指令碼程式設計:批量修改指定目錄內檔名

python指令碼程式設計:批量修改指定目錄內檔名

有的時候經常用到這個功能,批量修改視訊或者圖片的名字,按照數字編號等等,自己用python指令碼解決,輕量級又方便。

簡單版

對單個目錄下檔案字尾名
demo.py

#coding:utf-8
import os
# 列出當前目錄下所有的檔案
files = os.listdir(".")  
for filename in files:
    portion = os.path.splitext(filename)
    # 如果字尾是.mp4
    if portion[1] == ".mp4":  
        # 重新組合檔名和字尾名   
        newname = portion[0
] + ".rmvb" os.rename(filename,newname)

將該指令碼放在要修改的資料夾內,必須在當前目錄執行指令碼

功能強化版

可以遞迴修改子資料夾內的檔案,並按照規定編號
rename_batch.py

#coding:utf-8
#用於支援中文
import os

def renameFiles(cur_dir):   
    #列出某個目錄下的檔案和資料夾,可以是絕對和相對目錄  
    files=os.listdir(cur_dir)

    #切換到這個路徑作為工作目錄,這句要放在listdir後面
    os.chdir(cur_dir) 

    #遞迴遍歷所有檔案和資料夾,修改檔名,可以只針對特定字尾的檔案更改
for fileName in files: print fileName #遞迴子資料夾 for fileName in files: if os.path.isdir(fileName): print "***scan sub folder***" renameFiles(fileName) os.chdir(os.pardir) #別忘了切換到父目錄 #對這個目錄的檔案重新命名 for i in range(0,len(files)): fileNameArray=os.path.splitext(files[i]) if
len(fileNameArray)==2 and (fileNameArray[1]==".fbx" or fileNameArray[1]==".FBX"): newFileName=str(i)+fileNameArray[0]+".obj" os.rename(files[i],newFileName) print files[i]+" rename file succeeded" if __name__ == '__main__': renameFiles(".")

注意:

  • 必須用chdir切換到某個目錄才可以用os.rename函式
  • 如果不用chdir可以嘗試每次進入目錄用os.path.join拼接成完整的檔名再用os.rename作操作
  • 檔案必須有作業系統賦予的可修改許可權,不能是C盤或只讀

效果

修改前
這裡寫圖片描述
這裡寫圖片描述

修改後
這裡寫圖片描述
這裡寫圖片描述