利用python遍历目录下所有文件

Python中的os模块提供了列出目录文件的方法。

方法描述:列出目录中所有的文件,包括子目录,路径由path指定,访问文件的顺序为列表顺序,该方法返回一个列表

方法描述:该方法返回一个三元组,分别是dirpath(遍历的目录路径)、dirnames(目录下的所有文件)、filenames(目录下的所有文件)。该方法需要传递4个参数,其中3个参数有默认值。

top参数指定要遍历的目录路径;topdown可选,topdown为True时,优先遍历top目录下的所有文件,否则优先遍历top目录的子目录;oneerror可选,一个callable函数,当walk遍历文件发生异常时,会调用这个函数;followlinks一般默认即可。

使用listdir遍历目录文件

遍历D盘的example文件夹,代码如下:

#导入os模块
import os
#需要遍历的文件目录
path = r'D:\example'
#调用listdir方法遍历目录并打印
for file in os.listdir(path):
    print(file)

输出结果显示,该方法只返回了文件名称,如果我们需要返回输入文件的整个路径,则代码改进如下:

#导入os模块
import os
#需要遍历的文件目录
path = r'D:\example'
#调用listdir方法遍历目录并打印
for file in os.listdir(path):
    print(os.path.join(path,file))

但是这个方法有一个问题, 就是在example目录下子目录,该子目录下的文件并没有列出,但是我们希望列出子目录的文件,这时候我们就需要用到walk方法了。

使用walk方法递归遍历目录文件

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

#递归遍历目录文件示例
#导入os模块
import os
#待遍历的文件目录
path = r'D:\example'
for root, dirs, files in os.walk(path):
    for name in files:
        print(os.path.join(root, name))
    for name in dirs:
        print(os.path.join(root, name))

使用以上代码就能实现在指定的目录中遍历所有文件,也包括子目录的遍历。

顺便介绍一下如何在指定目录搜索指定文件

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

#递归遍历目录文件示例
#导入os模块
import os
#待遍历的文件目录
path = r'D:\example'
#待搜索的文件名
filename = '示例文档.txt'
for root, dirs, files in os.walk(path):
    for name in files:
        if (filename == name):
            print(os.path.join(root, name))

希望以上文章能帮助到你 : )