趣文网 > 作文大全

用Python实现目录遍历及文件搜索

2020-12-06 08:15:01
相关推荐

前面我们已经掌握了目录的创建、修改和删除方法,但是要开发文件资源管理器程序,仅有这些知识还是不够的。我们还有下面的问题需要解决:如何遍历目录中所有的文件?如何在目录中搜索到指定的文件?当目录中有子目录时该如何处理?

如何遍历目录中所有的文件?

遍历就是对目录中的所有文件按顺序逐个访问。例如程序要求列出某个目录中所有的文件名称,我们就需要访问这个目录中所有的文件并获取文件的名称,然后将获取的文件名称输出到屏幕上。

那么,我们如何遍历目录中所有的文件呢?Python语言的OS模块为我们提供了两个列出目录中所有文件的方法:

例1:使用listdir遍历目录文件

例1使用OS模块的listdir方法遍历D盘盘符下的pub目录,listdir返回一个列表,列表包含pub目录下所有文件名称,然后使用for循环输出列表。

例1输出结果如下图所示。

图1 例1遍历pub目录的输出结果

从例1的输出结果可以看出,listdir方法仅返回了文件名称,如果我们需要输出文件的整个路径,该如何处理呢?只需要使用os模块下的join方法连接遍历的目录路径和文件名称就可以了。修改例1的代码如下:

执行上面的代码,输出结果如下图所示。

图 2 例1遍历pub目录输出文件路径

从上图输出结果可以看出,pub目录下的所有文件以完整路径输出。但有一个问题,就是在pub目录下有doc子目录,该子目录下的文件并没有列出,下面我们将讨论当目录包含子目录时该如何处理?

当目录中有子目录时该如何处理?

在例1中要遍历的pub目录下面有doc子目录,例1的程序并没有列出doc子目录下的文件,我们现在希望也能遍历doc子目录下的文件。这时我们就要使用walk方法了,walk方法可以递归遍历目录下面的所有文件和子目录。

例2:使用walk递归遍历目录文件

例2中使用walk方法递归遍历目录文件,walk方法会返回一个三元组,分别是root、dirs和files。其中root是当前正在遍历的目录路径;dirs是一个列表,包含当前正在遍历的目录下所有的子目录名称,不包含该目录下的文件;files也是一个列表,包含当前正在遍历的目录下所有的文件,但不包含子目录。

例2输出结果如下图所示。

图 3 使用walk方法递归遍历pub目录输出

前面我们实现了在指定的目录中遍历所有文件,也包括子目录的遍历,下面我们来看看如何在指定的目录中搜索文件。

如何在指定的目录中搜索文件?

实现在指定的目录中搜索文件,主要实现思路是使用walk方法递归遍历要搜索的目录,在递归遍历过程中,使用for循环遍历walk方法返回的files列表,判断files列表中的文件名称是否和要搜索的文件名称相同,若相同就输出该文件。

例3:在指定的目录中搜索文件

例3使用walk方法递归遍历pub目录,使用walk方法主要是考虑到pub目录下有子目录,也需要在子目录中搜索文件。

现在我们已经掌握了使用listdir方法和walk方法遍历或递归遍历目录中的文件,也掌握了如何从目录中搜索文件。但是要编写资源管理程序,还得需要掌握Python函数和模块知识,以及Python用户界面的相关知识,后面会陆续介绍这些知识。

阅读剩余内容
网友评论
相关内容
延伸阅读
小编推荐

大家都在看

共度美好时光作文 五年级作文多少字 冬天里的温暖作文 攀登作文600字 我的母亲作文300字 小学生作文起步 我的伙伴作文600字 大爱无声作文 母爱作文600字初中 情感类作文600字 生命最珍贵作文 我终于成功了作文 打女生屁屁作文 打屁股家法作文 以奋斗为主题的作文 放假啦作文 六年级下册三单元作文 劳逸结合作文 孝敬长辈的作文 知行合一的作文 你是我的骄傲作文 关于兵马俑的作文 小学毕业作文600字 写景作文550字 幸福很简单作文 水上乐园作文300字 你是我的眼作文 写人的作文开头和结尾 我长大了300字作文 科幻作文1000字