许多次需要用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. salesforce 零基础开发入门学习(十三)salesforce中JSON的使用

    JSON作为一种目前流行的轻量级数据交换格式,salesforce也对其有良好的类对其进行封装处理.salesforce中前后台交互时,使用JSON可以将apex的Object对象进行序列化和反序列化 ...

  2. ECMAScript 6 入门

    ECMAScript 6 入门 东西真多哇 http://es6.ruanyifeng.com/#docs/module 目录 前言 ECMAScript 6简介 let和const命令 变量的解构赋 ...

  3. KnockoutJS 3.X API 第五章 高级应用(3) 虚拟元素绑定

    注意:这是一种高级技术,通常仅在创建可重用绑定的库时使用. 这不是你通常需要做的时候使用Knockout构建应用程序. Knockout的控制流绑定(例如,if和foreach)不仅可以应用于常规DO ...

  4. Ext.Net常用方法

    1.js(Ext)操作 Ext.Msg.alert('系统提示', '未连接血站,该功能暂时不能使用.'); Ext.getCmp("id").getValue();Ext.get ...

  5. 邻接矩阵无向图(一)之 C语言详解

    本章介绍邻接矩阵无向图.在"图的理论基础"中已经对图进行了理论介绍,这里就不再对图的概念进行重复说明了.和以往一样,本文会先给出C语言的实现:后续再分别给出C++和Java版本的实 ...

  6. HTML5的学习--performance获取加载时间的工具

    前段时间因为项目需要获取页面加载的时间,就去看了下HTML5中的performane. 可以用其获得页面详细的加载时间. 关于performance的详细内容可以查看 http://www.cnblo ...

  7. 使用elk+redis搭建nginx日志分析平台

    elk+redis 搭建nginx日志分析平台 logstash,elasticsearch,kibana 怎么进行nginx的日志分析呢?首先,架构方面,nginx是有日志文件的,它的每个请求的状态 ...

  8. Chrome开发者工具详解(1)-Elements、Console、Sources面板

    Chrome开发者工具详解(1)-Elements.Console.Sources面板 Chrome开发者工具面板 面板上包含了Elements面板.Console面板.Sources面板.Netwo ...

  9. 理解TCP/IP三次握手与四次挥手的正确姿势

    背景 注:以下情节纯属虚构,我并没有女朋友==. 和女朋友异地恋一年多,为了保持感情我提议每天晚上视频聊天一次. 从好上开始,到现在,一年多也算坚持下来了. 问题 有时候聊天的过程中,我的网络或者她的 ...

  10. QTableWidget控件总结<一>

    [1]QTableWidget简介 QTableWidget是QT对话框设计中常用的显示数据表格的控件. 学习QTableWidget就要首先看看QTableView控件(控件也是有"家世& ...