栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/313877.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号