python 递归获取子文件夹下的文件名 和文件类别标签

深度学习中,常常要获取文件夹下文件名和类别,为提取训练数据和测试数据准备
本文采用的一个文件下的40类数据做实验:
python 递归获取子文件夹下的文件名 和文件类别标签_第1张图片
最后保存成如下文件形式: 文件路径+文件名+类别标签
python 递归获取子文件夹下的文件名 和文件类别标签_第2张图片
具体代码如下:

# -*- coding: utf-8 -*-
"""
Created on Sat Mar 21 10:51:04 2020

filenameToCSV

@author: administration
"""
import os
import re

allpath=[]
allname=[]

#获取文件列表
def getallfile(path):
    allfilelist=os.listdir(path)
    # 遍历该文件夹下的所有目录或者文件
    for file in allfilelist:
        filepath=os.path.join(path,file)
        # 如果是文件夹,递归调用函数
        if os.path.isdir(filepath):
            getallfile(filepath)
        # 如果不是文件夹,保存文件路径及文件名
        elif os.path.isfile(filepath):
            allpath.append(filepath)
            allname.append(file)
    return allpath, allname


def Test():
    path="F:/project/2020/vs_project_2020/face_recog_opencv/source/facesdata/" #文件夹
    outfile="save.txt"#保存文件名
 
    file = open(outfile,"w")
    if not file:
        print ("cannot open the file %s for writing" % outfile)

    allpath, allname = getallfile(path) #获取文件目录 + 文件名
    
    for name in allpath:
        
        st =re.findall(".*a/s(.*)\.*",name)  #正则化匹配类别位置,获取图像类别
        st = ''.join(st)
        loc = st.split("\\")
        loc = ''.join(loc[0])#图像类别
        #print(loc)
        file.write(name+";" + loc)#写入文件中
        if name != allpath[-1]:   #最后一行不回车
            file.write("\n")
        
    file.close()

Test()

其中正则化提取图像的类别根据自己的需要进行修改即可

你可能感兴趣的:(python基础内容,深度学习)