Python 获取指定目录及其子目录下所有文件名 os.listdir 和 os.walk

目标

  1. 返回指定路径下所有的文件和文件夹列表
  2. 返回子文件夹中所有指定文件格式的文件

os.listdir()

参考学习

os.listdir(path)

# _*_coding:utf-8
import os 

def get_file(root_path,suffix): 
    for dir_name in os.listdir(root_path):
        exts = suffix.split(' ')
        #获取目录或文件的路径
        file_path = os.path.join(root_path,dir_name)
        #判断路径为文件还是路径
        if os.path.isdir(file_path):
            #递归获取所有文件和目录的路径
            file.write(file_path + '\n')
            # print(file_path)
            get_file(file_path,suffix)       
        else:
            for ext in exts:                
                #根据后缀名判断文件类别
                if(dir_name.endswith(ext)):          
                    # print(dir_name)
                    file.write(dir_name + '\n')                   
                    break

if __name__ == "__main__":
    root_path = r'D:\0数据任务'
    suffix = '.jpg .jpeg'
    outfile = r"C:\Users\Desktop\list_dir.txt"
    file = open(outfile,'w')
    get_file(root_path,suffix)
    file.close()

os.walk()

参考学习1
参考学习2
walk()函数返回目录树生成器(迭代器)。通过自顶向下遍历目录来生成目录树中的文件名。对于根目录顶部(包括顶部本身)树中的每个目录,它产生一个3元组(dirpath,dirnames,filenames)。

  1. dirpath (str)是当前正在遍历的这个文件夹的本身的地址。
  2. dirnames (list)是该文件夹中所有的目录的名字(不包括子目录)。
  3. filenames (list)是该文件夹中所有的文件(不包括子目录)。

但列表中的名称不包含路径,要得到一个完整路径(从顶部开始)到dirpath中的文件或目录,请执行os.path.join(dirpath,name)。更多详情可查看 python 标准库文档(os.walk) 。

os.walk(top[, topdown=True[, οnerrοr=None[, followlinks=False]]])

# _*_coding:utf-8
import os

def get_file(root_path,suffix):
    exts = suffix.split(" ")
    for root, dirs, files in os.walk(root_path):
        for name in files:
             for ext in exts:
                if(name.endswith(ext)):
                    file.write(name + "\n")
                    break

if __name__ == "__main__":
    root_path = r'D:\0数据任务'
    suffix = '.jpg .jpeg'
    outfile = r"C:\Users\Desktop\list_dir.txt"
    file = open(outfile,'w')
    get_file(root_path,suffix)
    file.close()

你可能感兴趣的:(python)