首页 > 代码库 > Python遍历文件夹

Python遍历文件夹

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

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

 1 import os 2  3 class FileTraversal: 4  5     def __init__(self, rootpath): 6  7         self.rootpath = rootpath 8  9         #从顶至底的遍历(在剪短的代码里,我比较喜欢这清晰的变量名)10         self.tracersal_from_top_to_down = True11 12         #遍历发生错误的时候的回调函数13         #函数参数为一个OSError类型参数14         #文件名会作为错误参数的一个属性 , 如 error.filename15         self.on_error_func = None16 17         #是否变量链接文件(如:软链接、硬链接、windows上的快捷方式)18         self.follow_links = False19     20     ‘‘‘21         设置遍历顺序22     ‘‘‘23     def setTopToDown(self, from_top_to_dowm=True):24         self.tracersal_from_top_to_down = from_top_to_dowm25         return self26     ‘‘‘27         设置错误回调函数28     ‘‘‘29     def setErrorFunc(self, err_func=None):30         self.on_error_func = err_func31         return self32     ‘‘‘33         设置是否遍历连接文件34     ‘‘‘35     def setFollowLinks(self, follow_links = False):36         self.follow_links = follow_links37         return self38 39     ‘‘‘40         获取迭代器41     ‘‘‘42     def getGenerator(self):43         return os.walk(self.rootpath, self.tracersal_from_top_to_down, self.on_error_func, self.follow_links)44 45     ‘‘‘46         获取所有文件47         @param absolute_path: 是否返回绝对路径,或者仅仅文件名48     ‘‘‘49     def getFiles(self,absolute_path=True):50         files = []51         for parent,dirnames,filenames in self.getGenerator():    #三个参数:分别返回1.父目录 2.所有文件夹名字(不含路径) 3.所有文件名字52             for file in filenames:53                 filepath = os.path.join(parent,file)54                 files.append( filepath if absolute_path else file)55         return files56 57     ‘‘‘58         获取当前目录下所有的文件(不递归遍历)59         @60     ‘‘‘61     def getThisLevelFiles(self,absolute_path=True):62         files = []63         all_in_dir = os.listdir(self.rootpath)64         for file in all_in_dir:65             filepath = os.path.join(self.rootpath, file)66             if not os.path.isdir(filepath):67                 files.append(filepath if absolute_path else file)68         return files

一般用法如下:

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

源文件: FileTraversal.py

Python遍历文件夹