Python-裝飾器-案例-獲取檔案列表
阿新 • • 發佈:2018-11-21
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)