码迷,mamicode.com
首页 > 编程语言 > 详细

Python遍历文件夹

时间:2016-10-01 21:43:20      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:

许多次需要用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 = True
11 
12         #遍历发生错误的时候的回调函数
13         #函数参数为一个OSError类型参数
14         #文件名会作为错误参数的一个属性 , 如 error.filename
15         self.on_error_func = None
16 
17         #是否变量链接文件(如:软链接、硬链接、windows上的快捷方式)
18         self.follow_links = False
19     
20     ‘‘‘
21         设置遍历顺序
22     ‘‘‘
23     def setTopToDown(self, from_top_to_dowm=True):
24         self.tracersal_from_top_to_down = from_top_to_dowm
25         return self
26     ‘‘‘
27         设置错误回调函数
28     ‘‘‘
29     def setErrorFunc(self, err_func=None):
30         self.on_error_func = err_func
31         return self
32     ‘‘‘
33         设置是否遍历连接文件
34     ‘‘‘
35     def setFollowLinks(self, follow_links = False):
36         self.follow_links = follow_links
37         return self
38 
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 files
56 
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遍历文件夹

标签:

原文地址:http://www.cnblogs.com/himir/p/5926273.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!