from os import path
from typing import List
import os
from pystdutils.assert_uitls import assert_true
def get_filenames(dirpath, filenames):
"""获取某路径下所有文件列表:type dirpath: str:param dirpath: 真实存在的路径:type filenames: list:param filenames: 文件名保存列表,依赖调用端构造传递:return:"""
# 校验
assert_true(
dirpath and isinstance(filenames, List) and path.exists(dirpath),
'dirpath must exist,and filenames must be list. dirpath:{}'.format(dirpath)
)
# 绝对路径
if not path.isabs(dirpath):
dirpath = path.abspath(dirpath)
for (pathname, dirs, files) in os.walk(dirpath):
if files: # 文件,则添加进列表
for f in files:
filenames.append(path.join(pathname, f))
if dirs: # 目录,递归获取
for dir_ in dirs:
get_filenames(path.join(pathname, dir_), filenames)