许多次需要用python来遍历目录下文件, 这一次就整理了记录在这里。

随实际工作,不定期更新。

 import os

 class FileTraversal:

     def __init__(self, rootpath):

         self.rootpath = rootpath

         #从顶至底的遍历(在剪短的代码里,我比较喜欢这清晰的变量名)
         self.tracersal_from_top_to_down = True

         #遍历发生错误的时候的回调函数
         #函数参数为一个OSError类型参数
         #文件名会作为错误参数的一个属性 , 如 error.filename
         self.on_error_func = None

         #是否变量链接文件(如:软链接、硬链接、windows上的快捷方式)
         self.follow_links = False

     '''
         设置遍历顺序
     '''
     def setTopToDown(self, from_top_to_dowm=True):
         self.tracersal_from_top_to_down = from_top_to_dowm
         return self
     '''
         设置错误回调函数
     '''
     def setErrorFunc(self, err_func=None):
         self.on_error_func = err_func
         return self
     '''
         设置是否遍历连接文件
     '''
     def setFollowLinks(self, follow_links = False):
         self.follow_links = follow_links
         return self

     '''
         获取迭代器
     '''
     def getGenerator(self):
         return os.walk(self.rootpath, self.tracersal_from_top_to_down, self.on_error_func, self.follow_links)

     '''
         获取所有文件
         @param absolute_path: 是否返回绝对路径,或者仅仅文件名
     '''
     def getFiles(self,absolute_path=True):
         files = []
         for parent,dirnames,filenames in self.getGenerator():    #三个参数:分别返回1.父目录 2.所有文件夹名字(不含路径) 3.所有文件名字
             for file in filenames:
                 filepath = os.path.join(parent,file)
                 files.append( filepath if absolute_path else file)
         return files

     '''
         获取当前目录下所有的文件(不递归遍历)
         @
     '''
     def getThisLevelFiles(self,absolute_path=True):
         files = []
         all_in_dir = os.listdir(self.rootpath)
         for file in all_in_dir:
             filepath = os.path.join(self.rootpath, file)
             if not os.path.isdir(filepath):
                 files.append(filepath if absolute_path else file)
         return files

一般用法如下:

 traversal = FileTraversal("/home/user/testdir")
 traversal.setTopToDown(False).setErrorFunc(err_foo).setFollowLinks(True) #不设置,直接使用默认参数亦可
 files = traversal.getFiles()
 # do something with files ....

源文件: FileTraversal.py

Python遍历文件夹的更多相关文章

  1. python 遍历文件夹 文件

    python 遍历文件夹 文件   import os import os.path rootdir = "d:\data" # 指明被遍历的文件夹 for parent,dirn ...

  2. python遍历文件夹下的文件

    在读文件的时候往往需要遍历文件夹,python的os.path包含了很多文件.文件夹操作的方法.下面列出: os.path.abspath(path) #返回绝对路径 os.path.basename ...

  3. Python 遍历文件夹清理磁盘案例

    import os suffix_name_list = [".pdb", ".ilk"] def find_file(path): # 遍历文件夹 for i ...

  4. python 遍历文件夹下的所有文件

    基础 import os # 遍历文件夹 def walkFile(file): for root, dirs, files in os.walk(file): # root 表示当前正在访问的文件夹 ...

  5. Python遍历文件夹和读写文件的方法

    需 求 分 析 1.读取指定目录下的所有文件2.读取指定文件,输出文件内容3.创建一个文件并保存到指定目录 实 现 过 程 Python写代码简洁高效,实现以上功能仅用了40行左右的代码~ 昨天用Ja ...

  6. python遍历文件夹中所有文件夹和文件,os.walk

    python中可以用os.walk来遍历某个文件夹中所有文件夹和文件. 例1: import os filePath = 'C:/Users/admin/Desktop/img' for dirpat ...

  7. python 遍历文件夹

    import os import os.path rootdir = “d:\data” # 指明被遍历的文件夹 for parent,dirnames,filenames in os.walk(ro ...

  8. python 遍历文件夹中所有文件

    '''使用walk方法递归遍历目录文件,walk方法会返回一个三元组,分别是root.dirs和files. 其中root是当前正在遍历的目录路径:dirs是一个列表,包含当前正在遍历的目录下所有的子 ...

  9. Python遍历文件夹枚举所有文件类型

    >>> import os >>> def enumfiles(path, dest): files = os.listdir(path) for f in fil ...

随机推荐

  1. Atitit j2ee5 jee5 j2ee6 j2ee7 jee6 jee7 新特性

    Atitit j2ee5 jee5 j2ee6 j2ee7 jee6 jee7 新特性 Keyword Java ee5 ,Java ee6,Java ee7  j2ee5 jee5 j2ee6 j2 ...

  2. JS---DOM操作有哪一些

    一  DOM对象有哪一些 1   windos 1.属性  opener 2.方法  open(),close() 例:<script langguage="javascript&qu ...

  3. POI生成WORD文档

    h2:first-child, body>h1:first-child, body>h1:first-child+h2, body>h3:first-child, body>h ...

  4. CGContextTranslateCTM: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.

    最近在测试的过程中, 发现了SpringBoar的一个问题: SpringBoard[53] <Error>: CGContextTranslateCTM: invalid context ...

  5. css margin

    css中margin边界叠加问题: 看个同方向和异方向margin重叠现象: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transiti ...

  6. 大型 JavaScript 应用架构中的模式

    原文:Patterns For Large-Scale JavaScript Application Architecture by @Addy Osmani 今天我们要讨论大型 JavaScript ...

  7. 初始化的一些问题(Vector使用)

    import java.util.Vector; import java.util.Iterator; import java.util.Arrays; import java.util.ArrayL ...

  8. java.lang.Long cannot be cast to java.lang.Integer解决办法

    情景: mybatis连接oracle 报错: 测试增的时候,报错 Java.lang.Long cannot be cast to  java.lang.Integer:删改没有报错. 排查过程: ...

  9. JavaScript垃圾回收(二)——垃圾回收算法

    一.引用计数(Reference Counting)算法 Internet Explorer 8以下的DOM和BOM使用COM组件所以是引用计数来为DOM对象处理内存,引用计数的含义是跟踪记录每个值被 ...

  10. HTML5第一讲

    第一回合:什么是HTML5? HTML5 将成为 HTML.XHTML 以及 HTML DOM 的新标准. HTML 的上一个版本诞生于 1999 年.自从那以后,Web 世界已经经历了巨变. HTM ...