python循环遍历文件操作

来源:互联网 发布:linux 查看总cpu使用率 编辑:程序博客网 时间:2024/06/06 07:26
    #!\urs\bin\env python      #encoding:utf-8       #设置编码方式        import os      import re      class loop_file:          def __init__(self, root_dir, short_exclude=[], long_exclude=[], file_extend=[]):              self.root_dir = root_dir              self.short_exclude = short_exclude              self.long_exclude = long_exclude              self.file_extend = file_extend          def __del__(self):              pass          def start(self, func):              self.func = func              return self.loop_file(self.root_dir)          def loop_file(self, root_dir):              t_sum = []              sub_gen = os.listdir(root_dir)              for sub in sub_gen:                  is_exclude = False                  for extends in self.short_exclude:  ##在不检查文件、目录范围中                      if extends in sub:              ##包含特定内容                          is_exclude = True                          break                      if re.search(extends, sub):     ##匹配指定正则                          is_exclude = True                          break                                      if is_exclude:                      continue                              abs_path = os.path.join(root_dir, sub)                  is_exclude = False                  for exclude in self.long_exclude:                      if exclude == abs_path[-len(exclude):]:                          is_exclude = True                          break                  if is_exclude:                      continue                  if os.path.isdir(abs_path):                      t_sum.extend(self.loop_file(abs_path))                  elif os.path.isfile(abs_path):                                  if not "." + abs_path.rsplit(".", 1)[1] in self.file_extend:  ##不在后缀名 检查范围中                          continue                      t_sum.append(self.func(abs_path))              return t_sum      if '__main__'==__name__:          root_dir = r'D:\harness\newshoppingcart\testcase\promo\single_promo'          short_exclude = ['.svn', '.*_new.rb']     ###不包含检查的短目录、文件          long_exclude = []                         ###不包含检查的长目录、文件          file_extend = ['.rb']                     ###包含检查的文件类型          lf = loop_file(root_dir, short_exclude, long_exclude, file_extend)          for f in lf.start(lambda f: f):              print f  

给定一个主目录,循环其下特定过滤规则的文件,并传给自定义的处理函数,最后返回每一个自定义函数返回的结果内容的列表。

0 0
原创粉丝点击