Python批量为不同文件夹下的文件更名

1、遇到问题

人脸样本数据中图片本身没有该人脸对应人的名字,需要将名字添加到图片名字中,初始图片和文件名如图

 2、解决思路

(1)需要将名字列表中的元素插入到对应角标的文件夹中下的每一个图片中,需要注意不能更改db文件的文件名。名字列表元素和人脸样本文件夹(部分)如下图

 (2)首先将path变量赋为上图文件夹的父文件夹,dirlist = os.listdir(path),dirlist列表存储上图的文件夹;

(3)path1通过循环赋为path + os.sep + dirlist[i],即为上图中的文件夹;

(4)接下来判断path1是否为目录,如果是,执行value = os.listdir(path1),value存储上图文件夹(某一个)中的文件名;

(5)判断value中的文件名是否以tif结尾,如果是,执行rename操作

 3、具体实施

(1)代码

import os
#导入path路径
path = 'D:/SoftwareCache/PyCharmCache/Project_Face/trainer/FERET_80_80/FERET_80_80-人脸数据库'


#获取该目录下所有低一级别子目录,存入列表中
dirlist = os.listdir(path)
#需要添加在图片名称中间的名字,存在一个列表里面
subname = ['Lesley','Elva','Gregary','Leonard','Franklin','Joanna','Kim','Roxanne','Berton','Simona','Afra','Dunn','Jesse','Janice','Egbert','Hulda','Betsy','Ansel','Judy','Adair','Channing','Leila','Rita','Edwiin','Samuel','Dana','Samantha','Page','Fitch','Verne','Adolph','Rebecca','Lindsay','Oliver','Claude','Theresa','Woodrow','Jo','Gene','Rock','Hiram','Modesty','Eric','Ada','Sherry','Mike','Janet','Francis','Blair','Vivien','Roberta','Odelia','Scott','Susie','Jenny','Mary','Ford','Juliet','Harriet','Lewis','Riva','Brandon','Ethel','Sid','Matt','Renee','Evelyn','Levi','Mick','Eartha','Veronica','Kent','Lucien','Marshall','Dinah','Frank','Ward','Allen','Quincy','Joy','Maxine','Chasel','Abbott','Mandel','Burton','Ula','Amy','Anastasia','Tyler','Rosalind','Dora','Ann','Donna','Merlin','Donald','Maggie','Antonia','Nicholas','Kerwin','Clarence','Charlotte','Aries','Sandra','Julius','Chester','Constance','Rae','Cornelius','Gordon','Cornelia','Shirley','Adonis','Zona','Donahue','Bonnie','Mignon','Glenn','Winni','Heloise','Theobald','Karen','Elma','Florence','Leona','Malcolm','Kama','Miles','Astrid','Mandy','Grover','Cheryl','Zenobia','Beatrice','Andrea','Abraham','Lee','William','Ron','Spencer','Octavia','Blithe','Ives','Evan','Frances','Buck','Lawrence','Angela','Omar','Jessica','Deborah','Eve','Katherine','Colbert','Humphrey','Phil','Phoebe','Celeste','Valentina','Wendy','Aaron','Horace','Deirdre','Alvis','Drew','Brook','Basil','Hubery','Penny','Stephanie','Eden','Diana','Valentine','Jill','Rachel','Roderick','Baldwin','Devin','Selena','Edmund','Benjamin','Nelson','Cornell','Bowen','Martina','Xaviera','Elijah','Jacqueline','Claire','Morton','Alexander','Orville','Griffith','Irma','Les','Norma','Daphne','Louise','Broderick','Lyndon','Patricia']

#i为外层文件夹计数
i = 0

for dir in dirlist:
    #将path1设置为第一个人脸数据的文件夹
    path1 = path + os.sep + dirlist[i]
    #获取path1文件夹下的文件,存储在value列表中

    if os.path.isdir(path1):
        value = os.listdir(path1)
        #n为同一文件夹下图片的计数
        n = 0
        for image in value:
            #判断是否为图片,endswith()方法为检测文件后缀
            if value[n].endswith('tif'):
                #oldname为该图片的绝对路径
                oldname = path1 + os.sep + value[n]
                #newname为新图片的绝对路径
                newname = path1 + os.sep + '0' + str(n+1) + '-' + subname[i] + '.tif'
                #new——image的文件名,方便打印看程序执行进度
                new_image = '0' + str(n+1) + '-' + subname[i] + '.tif'
                #将文件重命名
                os.rename(oldname, newname)
                #打印看进度
                print(dirlist[i] + '中:' + image, '----------->', new_image)
            n += 1
    i += 1

 (2)执行结果(部分输出)

FERET-002-Elva中:01.tif -----------> 01-Elva.tif
FERET-002-Elva中:02.tif -----------> 02-Elva.tif
FERET-002-Elva中:03.tif -----------> 03-Elva.tif
FERET-002-Elva中:04.tif -----------> 04-Elva.tif
FERET-002-Elva中:05.tif -----------> 05-Elva.tif
FERET-002-Elva中:06.tif -----------> 06-Elva.tif
FERET-002-Elva中:07.tif -----------> 07-Elva.tif

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力的王大锤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值