1.函数的变量简述
该函数一共有三个变量,分别是path、regex、sub_content
- path:需要进行修改的文件/文件夹所在的路径(假设文件路径为/A/B/C/haha.pdf,我们要修改haha.pdf文件,那么路径为/A/B/C;如果我们要修改文件夹C的名称,那么路径为/A/B)
- regex:被替换的内容的正则表达式;如果仅需进行简单的字符串替换,可以直接写上该字符串;也可以直接修改文件的后缀哦
- sub_content:替代内容
2.功能简述:
采用递归的方式,对该目录内的【所有】(包含子目录、子目录的子目录……中的内容)文件、文件夹的名称的目标内容进行修改【修改不可逆!!!不能使用Ctrl+Z撤销!!!所以要慎重!!!】
import os,re
def change_foldname(path, regex, sub_content):
try:
for dirpaths, dirnames, filenames in os.walk(path):
# print(dirpaths,"\n",dirnames,"\n",filenames)
if dirnames:
for anysubdir in dirnames:
old_subdir_path = path + "/" + anysubdir
regex_format = re.compile(regex)
new_folder_name = re.sub(regex, sub_content, anysubdir, 1)
new_subdir_path = path + "/" + new_folder_name
try:
os.rename(old_subdir_path, new_subdir_path)
print("【Foldername】更改foldername名成功!")
except Exception as reason:
print("【Foldername】更改foldername出错!")
print("【Foldername】出错路径为:{0}\n出错的folder为:{1}".format(dirpaths,anysubdir))
print("【Foldername】出错原因为:",reason)
change_foldname(new_subdir_path, regex, sub_content)
else:
print("【Foldername】路径{0}中没有folder了!".format(dirpaths))
except Exception as reason:
print("【Foldername】出错路径为:".format(dirpaths))
print("【Foldername】出错原因为:",reason)
def change_filename(path, regex, sub_content):
try:
for dirpaths, dirnames, filenames in os.walk(path):
# print(dirpaths,"\n",dirnames,"\n",filenames)
if filenames:
for anyfile in filenames:
if anyfile == r'.DS_Store':
pass
else:
old_file_path = path + "/" + anyfile
regex_format = re.compile(regex)
new_folder_name = re.sub(regex, sub_content, anyfile, 1)
new_file_path = path + "/" + new_folder_name
try:
os.rename(old_file_path, new_file_path)
print("【Filename】更改filename成功!")
except Exception as reason:
print("【Filename】更改filename出错!")
print("【Filename】出错路径为:{0}\n出错的file为:{1}".format(dirpaths, anyfile))
print("【Filename】出错原因为:",reason)
else:
print("【Filename】路径{0}中没有file了!".format(dirpaths))
if dirnames:
for anysubdir in dirnames:
subdir_path = path + "/" + anysubdir
change_filename(subdir_path, regex, sub_content)
else:
print("【Filename】路径{0}中没有folder了!".format(dirpaths))
except Exception as reason:
print("【Filename】出错路径为:{1}".format(dirpaths))
print("【Filename】出错原因为:",reason)
path = r"/Users/XXXXX/Desktop/XXXX"
regex = ".*\n\s\t......."(正则) 或 "李四"(指定字符串) 或"png"(文件后缀名)
sub_content = ".*\n\s\t......."(正则) 或 "李四"(指定字符串) 或 "pdf"(文件后缀名)
change_filename(path, regex, sub_content)
# change_foldname(path, regex, sub_content)