当前位置: 代码迷 >> 综合 >> Python 获取指定目录及其子目录下所有文件名 os.listdir 和 os.walk
  详细解决方案

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

热度:97   发布时间:2023-12-25 13:59:39.0

目标

  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')                   breakif __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 osdef 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")breakif __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()