Python遍历文件夹

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 = 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遍历文件夹的主要内容,如果未能解决你的问题,请参考以下文章

python常用代码片段总结

常用python日期日志获取内容循环的代码片段

使用 Python 代码片段编写 LaTeX 文档

Android 逆向使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 创建反汇编解析器实例对象 | 设置汇编解析器显示细节 )(代码片段

python 有用的Python代码片段

Python 向 Postman 请求代码片段