前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python 深度遍历文件夹

python 深度遍历文件夹

作者头像
雷子
发布2023-12-13 12:53:15
2650
发布2023-12-13 12:53:15
举报

在python中,经常会遍历目录,经常会想到os.listdir()方法。

代码语言:javascript
复制
import os 
os.listdir("path")

结果打印

当然我们发现当传入的目录下还有子目录时,该方法只能返回子目录名,而无法深度遍历子目录中的所有文件。

使用os.listdir()无法遍历到子目录中的文件。

为了解决上述问题,实现真正的深度遍历,本文将向你介绍同为Python os库中的另一个方法——os.walk()。

1.os.walk()使用方法介绍

1.1.语法

要使用os.walk()方法,我们首先需要导入Python的os库。

导入os库后,使用os.walk()方法的语法如下:

代码语言:javascript
复制
import os 
os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])

os.walk()方法最主要的参数为 “top" ,也就是需要遍历的文件的路径,通常我们只需要使用这个参数就可以正常使用os.walk()方法了,即通过

os.walk(top)就可以快速地深度遍历指定文件夹。

1.2.参数详解

参数名

意义

top

所要遍历的目录的地址

topdown

可选,为 True,则优先遍历 top 目录,否则优先遍历 top 的子目录(默认为True)。人话就是:如果为 True,先遍历top一级目录下的文件,然后再遍历一级目录中包含的子目录中的文件。

onerror

可选,需要一个 callable 对象,当 walk 需要异常时,会调用。

followlinks

可选,如果为 True,则会遍历目录下的快捷方式(Linux 下是软连接 symbolic link )实际所指的目录,如果为 False,则优先遍历 top 的子目录(默认False)。

1.3.返回值

通过使用isinstance()方法我们可以得知,os.walk()方法返回一个迭代器(Iterator)

代码语言:javascript
复制
import os
from collections.abc import Iterator
isinstance(os.walk('.'),Iterator)  
#输出;Ture

我们用实际代码演示下:

代码语言:javascript
复制
import  os print(os.walk("."))

结果:

代码语言:javascript
复制
import  os 
print(list(os.walk(".")))

强制转换

使用循环返回结果

代码语言:javascript
复制
  import  os
print(list(os.walk(".")))
for root, dirs, files in os.walk(".",topdown=False):
    for i in files:
        print("文件:{}".format(os.path.join(root,i)))
    for j in dirs:
        print("文件夹:{}".format(os.path.join(root,j)))

结果:

这样就可以全部的去遍历了,目录也进行了深度的便利,打印出来当前的目录下面所有的文件和文件夹。

后记

发现问题,解决问题。遇到问题,慢慢解决问题即可。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-12-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 雷子说测试开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档