问题
需求:
一个文件夹下含有众多的子文件夹,其中一些子文件夹的名字含有特定字符,需要用其他字符替换
分析:
问题在于一旦修改了其中一个子文件夹,那么子文件夹的子文件夹路径也会发生改变,就会导致更多地可能,导致递归灾难
因此应该遍历所有的文件夹名,然后按照地址长度逆序排列,修改最长的文件夹名字,不干扰上一级的文件夹路径
而且有另一个规律,
C:/Users/Administrator/Desktop/111/Learn_Java01当前
C:/Users/Administrator/Desktop/111/Learn_Java02期望
只有目标路径的最后文件名与期望的不同,修改才有意义,相同不必多说,无用
如果最后文件夹名字相同,前面的需要修改,那自然等到前面进行到了再进行修改,而不是得陇望蜀
正向非常麻烦,而且需要给修改过的设置特征变量,逆向思维更加简单,但是需要额外的规律作为陪衬才能继续进行,但是逆向思维的方法是最好的
解决
对文件夹列表排序
mydir=sorted(mydir,key=lambda x: len(x),reverse=True)
for i in mydir:
print(i)
update_folder(i)
对文件夹进行重命名
def update_folder(folder_my):
print("开始处理文件夹",folder_my)
#有一个规律,只有最后一个期望得到不同路径才是正确的,可修改的,否则就是之前修改过的,因此应该是逆序倒着修改
charc_list=[]
temp_folder=folder_my
judge_name=folder_my.split("/")[-1]
base_path=folder_my[:-len(judge_name)]
temp_name=judge_name
check_word = ["111","222"]
change_word = ["Learn_Java","Learn_Java01"]
for i in range(0, len(check_word)):
judge_name = judge_name.replace(check_word[i], change_word[i])
if temp_name!=judge_name:#如果名字变化说明不同了,应该修改
os.rename(temp_folder,base_path+judge_name)
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/100237.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...