我正在尝试编写一个循环遍历每个子文件夹的程序,查找并重命名与文件名中给定模式匹配的所有文件。这些文件都是.jpg文件,具有以下模式:
[0-9][0-9][0-9]_UsersfirstnameUserslastname[0-9][0-9][0-9].jpg
因此,例如,一个文件夹将具有以下内容:
452_AlexBobenko002.jpg
452_AlexBobenko003.jpg
452_AlexBobenko007.jpg
然后它将转到存在以下文件的另一个文件夹:
834_CatDonald001.jpg
...
834_CatDonlad126.jpg
我想重命名这些文件,以便在最后一个字母之后和最后一组3位数之前有一个下划线。这样的模式将来自:
[0-9][0-9][0-9]_UsersfirstnameUserslastname[0-9][0-9][0-9].jpg
到
[0-9][0-9][0-9]_UsersfirstnameUserslastname_[0-9][0-9][0-9].jpg
从上面的例子中我会得到:
452_AlexBobenko002.jpg --> 452_AlexBobenko_002.jpg
452_AlexBobenko003.jpg --> 452_AlexBobenko_003.jpg
452_AlexBobenko007.jpg --> 452_AlexBobenko_007.jpg
和
834_CatDonald001.jpg --> 834_CatDonald_001.jpg
...
834_CatDonlad126.jpg --> 834_CatDonald_126.jpg
到目前为止,我已经能够使用以下内容找到所需的文件:
path = mydir
folders = [filename for filename in os.listdir(path) if filename.startswith('EMP-')]
subfolders = [[] for i in range(len(folders))]
# Will populate the empty sublist of subfolders with the contents of each distinct folder
for i in range(len(folders)):
subfolders[i] = [subfolder for subfolder in os.listdir(path +'\\%s' %folders[i])]
for z_1 in range(len(folders)):
for z_2 in range(len(subfolders[z_1])):
if os.path.isdir(path + '\\%s\\%s' % (folders[z_1], subfolders[z_1][z_2])) == True:
for file in glob.glob(path + '\\%s\\%s\\[0-9][0-9][0-9]_*.jpg' % (folders[z_1], subfolders[z_1][z_2])):
#rename(file)
我真的不知道如何重命名