查找并重命名与特定模式匹配的目录中的所有文件

时间:2016-01-18 00:06:23

标签: regex python-3.x glob file-rename

我正在尝试编写一个循环遍历每个子文件夹的程序,查找并重命名与文件名中给定模式匹配的所有文件。这些文件都是.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)  

我真的不知道如何重命名

0 个答案:

没有答案