Python--批量修改文件名稱

Dr. he 最近忙着畢業論文的事情,需要將一千多張超聲切面圖的文件名後綴名去掉,例如:剔除文件名"1802014223FAMFIBAI.jpg"的第11個字符至第18個字符”FAMFIBAI”,新文件名稱"1802014223.jpg"。看到他一個個文件重命名,我也是“醉了”。雖然做自動化測試的,但是比較少直接用python寫腳本,嘗試着解決他的需求。結合網友的分享的資料,寫下方法change_filename_substring(),以下代碼能解決
實際需求,適合初學者。不足之處,歡迎指出修正!

import os
import re


def change_filename_substring():
# path爲批量文件的文件夾的路徑
path = input("請輸入文件夾完整路徑(如C:/Users/Default/Pictures):")
count = 0 # 重命名的文件數量
msg = ''
while '\\' in path or '/' not in path:
path = input("輸入的文件夾路徑有誤,請按規範重新輸入,退出請按’#‘:")
if path == '#':
exit() # 退出程序
file_names = os.listdir(path) # 指定文件夾中的文件列表
for name in file_names:
if len(name) == 22:
new_name = re.sub(name[10:18], '', name) # 以''替換文件名的第11至第18個字符,第一個字符的索引是’0‘
print("剔除當前文件名{}的第10個字符至第17個字符:{},文件新名稱:{}\n".format(name, name[10:18], new_name))
os.chdir(path) # chdir => change_directory,切換到path目錄,方便直接rename
# try except 捕捉異常
try:
os.rename(name, new_name) # 用new_name重命名文件
except BaseException as except_msg: # 定義變量except_msg接收異常信息
msg = except_msg
print(except_msg)
print("\n")
if msg == '':
count += 1 # 重命名的文件數量

new_file_names = os.listdir(path)
print("指定目錄包含的文件數量:{},重命名的條件:包括後綴名共22個字符,重命名後與其他文件不重名,符合條件的文件數量:{}".format(len(file_names), count))
print("修改前的文件名列表:%s" % file_names)
print("修改後的文件名列表:{}".format(new_file_names))
print("\n任務完成!")


if __name__ == '__main__':
change_filename_substring()
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章