# -*- coding=utf-8 -*-
import os
def lst_rename(dirpath, o_key, n_key):
"""
lst_rename :修改目前檔案夾内,檔案名的關鍵字(不會修改檔案夾)
參數:dirpath 檔案夾路徑
o_key 檔案名中待修改字元
n_key 改成後字元,預設為空
傳回:修改次數
"""
# 擷取檔案夾内的檔案名清單
filelist = os.listdir(dirpath)
# 計數器
flag = 0
# 周遊目前檔案清單
for filename in filelist:
# 檔案名絕對路徑
old_filepath = dirpath + os.sep + filename
# 判斷是否為檔案夾,是則跳過
if os.path.isdir(old_filepath):
continue
# 替換關鍵詞
new_filename = filename.replace(o_key, n_key)
# 新的檔案路徑
new_filepath = dirpath + os.sep + new_filename
# 修改檔案名
os.rename(old_filepath, new_filepath)
# 列印修改後的檔案名
print(new_filename)
# 計數
flag += 1
# 提示修改次數
print("已修改", flag, "處")
# 提示修改結束
print('end')
def rename_walk(dirpath, o_key, n_key=''):
"""
rename_walk :周遊修改指定路徑内的所有符合要求檔案名,含子檔案夾
參數:dirpath 檔案夾路徑
o_name 檔案名中待修改字元
n_name 改成後字元,預設為空
傳回:修改次數
"""
# 初始化計數器
flag = 0
# 提示開始
print('=== action ===')
# 周遊檔案夾
for wdir, ndir, filename_lst in os.walk(dirpath):
# 周遊目前檔案夾檔案名
for filename in filename_lst:
# 檔案的絕對路徑
oldfilepath = wdir + os.sep + filename
# 新的檔案名
new_filename = filename.replace(o_key, n_key)
# 合成新的檔案絕對路徑
newfilepath = wdir + os.sep + new_filename
# 計數
flag += 1
# 修改檔案名
os.rename(oldfilepath, newfilepath)
# 列印修改後的檔案名
print(new_filename)
# 列印修改次數
print("已修改", flag, "處")
# 提示結束修改
print('==== end ====')
def main():
dirname = str(input("檔案夾絕對路徑 >>"))
o_key = str(input("修改的關鍵字 >>"))
n_key = str(input("修改的結果 >>"))
# lst_rename(dirname, o_key, n_key)
rename_walk(dirname, o_key, n_key)
ok = input("按回車結束")
if __name__ == "__main__":
main()