python指令碼程式設計:批量修改指定目錄內檔名
阿新 • • 發佈:2019-01-08
有的時候經常用到這個功能,批量修改視訊或者圖片的名字,按照數字編號等等,自己用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盤或只讀
效果
修改前
修改後