首页 > 代码库 > 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遍历文件夹
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。