python 获取文件列表_Python-装饰器-案例-获取文件列表

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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值