Python中文件遍历的两种方法

作者:junjie 时间:2022-01-28 20:34:03 

关于Python的文件遍历,大概有两种方法,一种是较为便利的os.walk(),还有一种是利用os.listdir()递归遍历。

方法一:利用os.walk

os.walk可以自顶向下或者自底向上遍历整个文件树,然后返回一个含有3个元素的tuple,(dirpath, dirnames, filenames),要注意的是,os.walk()会返回一个generater,所以调用的时候一定要放到for循环中。


import os
def walk_dir(dirname):
 for root,dirs,files in os.walk(dirname):
  for f in files:
   yield os.path.join(root, f)



方法二:利用os.listdir()

这个方法也比较简单,列出目录然后判断是不是文件夹,不是的话直接返回文件路径,是的话递归调用。


import os
def walk_dir2(dirname):
 for d in os.listdir(dirname):
  path = os.path.join(dirname, d)
  if os.path.isdir(path):
   #note recursive in for...in...
   for f in walk_dir2(path):
    yield f
  else:
   yield path


这里值得一提的是,由于函数中使用了yield,所以会被认为是一个generater,递归调用的时候也需要放到for循环中,否则函数并不会被真正执行。最新的Python 3.3中引入了yield from语法,可以解决上面的问题。

标签:Python,文件遍历
0
投稿

猜你喜欢

  • MS SQL 查询数据在数据库中所在行

    2009-04-26 19:36:00
  • Python批量修改图片分辨率的实例代码

    2023-01-30 01:59:10
  • 使用Anaconda3建立虚拟独立的python2.7环境方法

    2023-10-01 20:10:43
  • Python高级特性 切片 迭代解析

    2022-03-28 14:32:49
  • 详解MySQL中的缓冲池(buffer pool)

    2024-01-26 01:05:53
  • python实现查找excel里某一列重复数据并且剔除后打印的方法

    2021-01-23 10:27:45
  • 图文详解Mysql使用left join写查询语句执行很慢问题的解决

    2024-01-13 17:14:52
  • asp如何建立和删除文件夹?

    2009-11-26 20:34:00
  • ExtJs事件机制基本代码模型和流程解析

    2024-05-03 15:59:14
  • Access报错:文件共享锁定数溢出

    2009-03-21 18:32:00
  • 教你使用Python的pygame模块实现拼图游戏

    2022-06-28 03:20:20
  • Python基于递归算法求最小公倍数和最大公约数示例

    2021-07-20 09:36:23
  • PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上

    2021-02-11 11:15:33
  • Debian中完全卸载MySQL的方法

    2024-01-25 19:25:34
  • python实现的二叉树算法和kmp算法实例

    2023-08-07 20:50:49
  • 10分钟彻底搞懂Http的强制缓存和协商缓存(小结)

    2024-04-17 10:09:08
  • C语言实现二叉搜索树的完整总结

    2023-11-26 11:20:43
  • 用MySQL做站点时如何记录未知错误的发生

    2010-09-30 14:11:00
  • JavaScript中字符串的常用操作方法及特殊字符

    2024-04-17 10:36:26
  • Python使用PyAV提取视频关键帧的实践

    2023-04-29 23:45:04
  • asp之家 网络编程 m.aspxhome.com