Python遍历文件夹
许多次需要用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遍历文件夹的更多相关文章
- python 遍历文件夹 文件
python 遍历文件夹 文件 import os import os.path rootdir = "d:\data" # 指明被遍历的文件夹 for parent,dirn ...
- python遍历文件夹下的文件
在读文件的时候往往需要遍历文件夹,python的os.path包含了很多文件.文件夹操作的方法.下面列出: os.path.abspath(path) #返回绝对路径 os.path.basename ...
- Python 遍历文件夹清理磁盘案例
import os suffix_name_list = [".pdb", ".ilk"] def find_file(path): # 遍历文件夹 for i ...
- python 遍历文件夹下的所有文件
基础 import os # 遍历文件夹 def walkFile(file): for root, dirs, files in os.walk(file): # root 表示当前正在访问的文件夹 ...
- Python遍历文件夹和读写文件的方法
需 求 分 析 1.读取指定目录下的所有文件2.读取指定文件,输出文件内容3.创建一个文件并保存到指定目录 实 现 过 程 Python写代码简洁高效,实现以上功能仅用了40行左右的代码~ 昨天用Ja ...
- python遍历文件夹中所有文件夹和文件,os.walk
python中可以用os.walk来遍历某个文件夹中所有文件夹和文件. 例1: import os filePath = 'C:/Users/admin/Desktop/img' for dirpat ...
- python 遍历文件夹
import os import os.path rootdir = “d:\data” # 指明被遍历的文件夹 for parent,dirnames,filenames in os.walk(ro ...
- python 遍历文件夹中所有文件
'''使用walk方法递归遍历目录文件,walk方法会返回一个三元组,分别是root.dirs和files. 其中root是当前正在遍历的目录路径:dirs是一个列表,包含当前正在遍历的目录下所有的子 ...
- Python遍历文件夹枚举所有文件类型
>>> import os >>> def enumfiles(path, dest): files = os.listdir(path) for f in fil ...
随机推荐
- Atiti attilax主要成果与解决方案与案例rsm版 v4
Atiti attilax主要成果与解决方案与案例rsm版 v4 版本历史记录1 1. ##----------主要成果与解决方案与 参与项目1 ###开发流程与培训系列1 #-----组织运营与文 ...
- iOS 和 Android 测试托管平台 FIR.im 的注册与常用功能
FIR.im 作为专业的 iOS 和 Android 测试包发布网站, 注册超简单,支持输入网址直接下载和二维码扫描下载.功能类似 TestFlight ,但又比它强大,支持游客访问密码,iOS 和 ...
- .net生成随机字符串
生成随机字符串的工具类: /// <summary> /// 随机字符串工具类 /// </summary> public class RandomTools { /// &l ...
- CSS中模拟父元素选择器
很多情况下,我们需要找到父元素,但可惜的是css中并没有这样的一个选择器. 至于原因可以看张鑫旭的如何在CSS中实现父选择器效果这篇文章. 简单来说这个实现并不是真正的父元素选择器,只是利用其它思路来 ...
- Android项目中,在一个数据库里建立多张表
一,创建一个公共的DBAdapter; 为了在整个程序运行期间调用该公共的数据库,我们定义了一个扩展自Application的CommDB类: 1,创建唯一的数据库: public class Com ...
- Android_TextView之跑马灯效果
对于android控件中的TextView,相信大家一定不陌生,在显示文本内容时十分方便.不过我在使用时遇到一个小问题,就是当文字交多时,如何为用户进行展示.今天就为大家介绍一种解决方案--跑马灯效果 ...
- js实现图片加载特效(从左到右,百叶窗,从中间到两边)
/* 网上百度的,感觉”从中间到两边“的效果写的不是很好,改了一下,感觉可以了!*/<html> <head> <title></title> < ...
- Ubuntu下安装配置JDK1.7
1.下载JDK 对于下载方法,可以使用命令,也可以手动下载.本人采用手动下载jdk的方式. 下载jdk-7u7-linux-i586.tar.gz到Ubuntu桌面. 2. 将下载的文件移动到这个文件 ...
- JavaScript闭包(一)——实现
闭包的官方的解释是:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分. 通俗点的说法是: 从理论角度:所有的函数.因为它们都在创建的时候就将上层上下文 ...
- [New Portal]Windows Azure Virtual Machine (11) 在本地使用Hyper-V制作虚拟机模板,并上传至Azure (1)
<Windows Azure Platform 系列文章目录> 本章介绍的内容是将本地Hyper-V的VHD,上传到Azure数据中心,作为自定义的虚拟机模板. 注意:因为在制作VHD的最 ...