1 importos2
3
4 defget_all_path(fun):5 '''装饰器。功能:获取全路径文件名。如:D:/tmp/12.txt6 :param fun:7 :return:file_path_list 全路径文件名列表8 '''
9
10 definner(r):11 #print("获取全路径文件名")
12 file_name_list =fun(r)13 file_path_list =[]14 for file infile_name_list:15 path_file = refer_path + os.sep +file16 file_path_list.append(path_file)17 returnfile_path_list18
19 returninner20
21
22 defget_pdf(fun):23 '''装饰器。功能:获取后缀为pdf、PDF的文件名列表24 :param fun:25 :return: file_pdf_list后缀为pdf、PDF的文件名列表26 '''
27
28 definner(r):29 #print("获取后缀为.pdf的文件名列表")
30 file_name_list =fun(r)31 file_pdf_list =[]32 for file infile_name_list:33 ext = os.path.splitext(file)[1]34 if ext.lower() == '.pdf': #判断后缀是否为.pdf、.PDF
35 file_pdf_list.append(file)36 returnfile_pdf_list37
38 returninner39
40
41 def get_suffix_out(suf="txt"):42 '''装饰器。功能:获取后缀为指定后缀(suf)的文件名列表43 :param suf:指定后缀,如:txt、jpg44 :return:suf_list符合指定后缀的文件列表45 '''
46
47 defget_suffix(fun):48 def inner(*args, **kwargs):49 #print("inner 后缀限制是:", suf)
50 ## print("获取后缀为.pdf的文件名列表")
51 file_name_list = fun(*args, **kwargs)52 suf_list =[]53 for file infile_name_list:54 src_suf = os.path.splitext(file)[1] #获取文件的后缀,如:.pdf、.txt
55 if src_suf.lower() == '.' + str(suf).lower(): #判断后缀是否为.suf、.SUF
56 suf_list.append(file)57 returnsuf_list58
59 returninner60
61 returnget_suffix62
63
64 defget_papers_only(fun):65 '''装饰器。功能:只获取列表中的文件名。不含文件夹。如:1.txt、123.pdf66 :param fun:67 :return: file_name_only_list 只有文件名,不含文件夹的列表68 '''
69
70 definner(r):71 #print("只获取文件名,不含文件夹")
72 file_name_list =fun(r)73 #只获取文件名,不含文件夹列表。如:1.txt、123.pdf
74 file_name_only_list =[]75 for file infile_name_list:76 if os.path.isabs(file): #1、如果为绝对路径,r表示绝对路径全路径列表
77 if not os.path.exists(file): #检查全路径的有效性
78 print("路径不存在")79 exit()80 if os.path.isfile(file): #判断是否为文件(非文件夹)
81 file_name_only_list.append(file)82 else: #2、如果为相对路径,r表示相对路径统一路径字符串
83 path_file = r + os.sep +file84 if not os.path.exists(path_file): #检查全路径的有效性
85 print("路径不存在")86 exit()87 if os.path.isfile(path_file): #判断是否为文件(非文件夹)
88 file_name_only_list.append(file)89 returnfile_name_only_list90
91 returninner92
93
94 #巧用装饰器做过滤条件
95 @get_all_path #获取全路径文件列表。如:[D:\tmp\123.pdf]
96 @get_pdf #获取pdf后缀列表。如:[123.pdf]
97 @get_papers_only #只获取文件列表,不含文件夹。如:[a、b、1.txt、123.pdf]
98 defget_list(refer_path):99 '''获取指定路径下的所有文件列表(含文件夹)。如:a、b、1.txt、123.pdf100 :param refer_path: 指定存放文件的路径101 :return:路径下的所有文件名102 '''
103 try:104 file_name_list =os.listdir(refer_path)105 returnfile_name_list106 exceptException as e:107 print(e)108 exit()109
110
111 @get_papers_only #只获取文件列表,不含文件夹。如:[a、b、1.txt、123.pdf]
112 @get_suffix_out("txt") #只获取txt后缀列表。如:[D:\tmp\123.txt]
113 #@get_pdf # 只获取pdf后缀列表。如:[D:\tmp\123.pdf]
114 defall_path(all_path_list):115 returnall_path_list116
117
118 if __name__ == '__main__':119 #指定路径
120 refer_path = r'D:\tmp'
121 #文件名称列表
122 file_name_list =get_list(refer_path)123 print(file_name_list)124
125 path_list = ['D:\\tmp\\123.PDF',126 'D:\\tmp\\combinedminutes.txt',127 'D:\\tmp\\mark.pdf',128 'D:\\tmp\\meetingminutes.ps',129 'D:\\tmp\\meetingminutes2.123',130 'D:\\tmp\\rotatedpage.pdf',131 'D:\\tmp\\watermarkedCover.pdf']132
133 print(path_list)134 pdf_list =all_path(path_list)135 print(pdf_list)