• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > Python遍历目录中的所有文件的方法

Python遍历目录中的所有文件的方法

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了python遍历文件目录,python 遍历目录,python 文件目录,python 获取目录文件,python 目录下文件等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

os.walk生成器
os.walk(PATH), PATH是个文件夹路径,当然可以用.或者../这样啦.
返回的是个三元元组为元素的列表, 每个元素代表了一个文件夹下的内容.第一个就是当前文件夹下内容.
返回的三元元组代表(该工作文件夹, 该文件夹下的文件夹的列表, 该文件夹下文件的列表).
所以,
获得所有子文件夹, 就是(d代表这三元元组):

os.path.join(d[0],d[1]);
</div>

获得所有子文件, 就是:

 os.path.join(d[0],d[2]);
</div>

以下例子使用了两套循环, 遍历后得到所有文件名的list后再循环所有文件:

result = [os.path.join(dp, f) for dp, dn, fs in os.walk("_pages") for f in fs if os.path.splitext(f)[1] == '.html']
for fname in result:
 #do something
</div>

实际等于

result=[]
for dp, dn, fs in os.walk("_pages"):
 for f in fs:
 if (os.path.splitext(f)[1] == '.html'):
  result.append(os.path.join(dp, f))
for fname in result:
 #do something
</div>

最后判断是否html后缀获得文件名, 还可以使用glob:

result = [y for x in os.walk(PATH) for y in glob.glob(os.path.join(x[0], '*.txt'))]
</div>

还可以使用迭代器方法:

from itertools import chain
import glob
result = (chain.from_iterable(glob.iglob(os.path.join(x[0], '*.txt')) for x in os.walk('.')))
</div>

进阶
标准文件数遍历生成器os.walk既强大又灵活,不过os.walk还缺乏应用程序需要的一些细节上的处理能力,例如根据某种模式选择文件,对所有文件(或目录)进行排序,或只遍历当前目录不进入其子目录,因此需要对接口对应进行封装。

import os, fnmatch 
 
def filter_files(dirname, patterns='*', single_level=False, yield_folders=False): 
  patterns = patterns.split(';') 
  allfiles = [] 
  for rootdir, subdirname, files in os.walk(dirname): 
    print subdirname 
    allfiles.extend(files) 
    if yield_folders: 
      allfiles.extend(dubdirname) 
    if single_level: 
      break 
  allfiles.sort() 
  for eachpattern in patterns: 
    for eachfile in fnmatch.filter(allfiles, eachpattern): 
        print os.path.normpath(eachfile) 

</div>

说明:
1.extend与append的区别
列表是以类的形式实现的。“创建”列表实际上是将一个类实例化。因此,列表有多种方法可以操作。  列表可包含任何数据类型的元素,单个列表中的元素无须全为同一类型。 append() 方法向列表的尾部添加一个新的元素。只接受一个参数,extend()方法只接受一个列表作为参数,并将该参数的每个元素都添加到原有的列表中。
2. fnmatch模块
fnmatch 模块使用模式来匹配文件名。模式语法和 Unix shell 中所使用的相同. 星号(*) 匹配零个或更多个字符, 问号(?) 匹配单个字符。你也可以使用方括号来指定字符范围,例如 [0-9] 代表一个数字,其他所有字符都匹配它们本身。
1) fnmatch.fnmatch(name, pattern)方法:测试name是否匹配pattern,返回true/false
2) fnmatch.filter(names, pat)实现列表特殊字符的过滤或筛选,返回符合匹配模式的字符列表,当然names表示的是列表

</div>

您可能想查找下面的文章:

  • Python实现遍历目录的方法【测试可用】
  • Python获取文件所在目录和文件名的方法
  • Python获取文件所在目录和文件名的方法
  • Python遍历目录并批量更换文件名和目录名的方法
  • Python遍历目录中的所有文件的方法
  • Python读取一个目录下所有目录和文件的方法
  • Python遍历目录中的所有文件的方法
  • python遍历目录的方法小结
  • python遍历目录的方法小结
  • python检测是文件还是目录的方法

相关文章

  • 使用Python获取Linux系统的各种信息
  • Python编程生成随机用户名及密码的方法示例
  • Python学习资料
  • Python中isnumeric()方法的使用简介
  • python实现mysql的单引号字符串过滤方法
  • python共享引用(多个变量引用)示例代码
  • Python切片用法实例教程
  • 十个Python程序员易犯的错误
  • python executemany的使用及注意事项
  • python实现class对象转换成json/字典的方法

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • python读写json文件的简单实现
    • python+mysql实现简单的web程序
    • python实现的登录和操作开心网脚本分享
    • 收藏整理的一些Python常用方法和技巧
    • 玩转python selenium鼠标键盘操作(ActionChains)
    • 简析Python的闭包和装饰器
    • 分析用Python脚本关闭文件操作的机制
    • Python创建系统目录的方法
    • Python random模块(获取随机数)常用方法和使用例子
    • python实现折半查找和归并排序算法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有