import os def get_file_path(fun): '''装饰器:获取全路径文件名。如:D:/tmp/12.txt :param fun: :return:file_path_list 全路径文件名列表 ''' def inner(r): # print("获取全路径文件名") file_name_list = fun(r) file_path_list = [] for file in file_name_list: path_file = refer_path + os.sep + file file_path_list.append(path_file) return file_path_list return inner def get_file_pdf(fun): '''装饰器。功能:获取后缀为pdf、PDF的文件名列表 :param fun: :return: file_pdf_list后缀为pdf、PDF的文件名列表 ''' def inner(r): # print("只获取后缀为.pdf的文件名列表") file_name_list = fun(r) file_pdf_list = [] for file in file_name_list: ext = os.path.splitext(file)[1] if ext.lower() == '.pdf': # 判断后缀是否为.pdf、.PDF file_pdf_list.append(file) return file_pdf_list return inner def get_file_only(fun): '''装饰器。功能:只获取列表中的文件名。不含文件夹。如:1.txt、123.pdf :param fun: :return: file_name_only_list 只有文件名,不含文件夹的列表 ''' def inner(r): # print("只获取文件名,不含文件夹") file_name_list = fun(r) # 只获取文件名,不含文件夹列表。如:1.txt、123.pdf file_name_only_list = [] for file in file_name_list: if os.path.isfile(file): # 判断是否为文件(非文件夹) file_name_only_list.append(file) return file_name_only_list return inner # 巧用装饰器做过滤条件 @get_file_path # 只获取全路径文件列表。如:[D:\tmp\123.pdf] @get_file_pdf # 只获取pdf后缀列表。如:[123.pdf] @get_file_only # 只获取文件列表,不含文件夹。如:[a、b、1.txt、123.pdf] def get_file_list(refer_path): '''获取指定路径下的所有文件列表(含文件夹)。如:a、b、1.txt、123.pdf :param refer_path: 指定存放文件的路径 :return:路径下的所有文件名 ''' file_name_list = os.listdir(refer_path) return file_name_list if __name__ == '__main__': # 指定路径 refer_path = r'D:\tmp' # 文件名称列表 file_name_list = get_file_list(refer_path) print(file_name_list)