遍历目录获取所有文件和子目录
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import glob
def get_file_path(root_path,file_list,dir_list):
#获取该目录下所有的文件名称和目录名称
dir_or_files = os.listdir(root_path)
for dir_file in dir_or_files:
#获取目录或者文件的路径
dir_file_path = os.path.join(root_path,dir_file)
#判断该路径为文件还是路径
if os.path.isdir(dir_file_path):
dir_list.append(dir_file_path)
#递归获取所有文件和目录的路径
get_file_path(dir_file_path,file_list,dir_list)
else:
file_list.append(dir_file_path)
# 获取指定目录指定文件
def get_files_from_dir(dir, wildcard):
file_names = []
exts = wildcard.split(" ")
files = os.listdir(dir)
for name in files:
fullname = os.path.join(dir, name)
if(os.path.isdir(fullname)):
# 遍历子路径,如果需要请修改pathStr获取方式,否者子路径的图片打开会有问题
# file_names += get_files_from_dir(fullname, wildcard)
pass
else:
for ext in exts:
if(name.endswith(ext)):
file_names.append(name)
break
return file_names
# 获取指定目录指定文件
def get_file(path='./', condition='*'):
'''
:param path: 查找路径, 默认查找当前目录
:param condition: 查找条件,”*”匹配0个或多个字符;”?”匹配单个字符;”[]”匹配指定范围内的字符,如:[0-9]匹配数字
:return: 返回找到的结果
'''
files = []
for file in glob.glob(path + "/" +condition):
files.append(file)
return files
if __name__ == "__main__":
#根目录路径
root_path = r"./test"
files = []
dirs= []
get_file_path(root_path, files, dirs)
print(files)
print(dirs)
get_file() #获取当前目录所有文件
get_file(root_path, '*.png') #获取目录下的所有png文件
get_file(root_path, '*[0-9].png') #获取目录下的带数字的png文件
get_files_from_dir(root_path, '.png .jpg') #获取目录下的带以.png和.jpg结尾文件