os模块,os.walk()方法解释与使用

2023年2月6日08:25:32

os.walk方法,主要是用来遍历一个目录内各个子目录和子文件。

python的定义格式如下:

def walk(top, topdown=True, onerror=None, followlinks=False):

top参数,是要遍历的目录。
topdown参数,为True的时候,优先遍历top目录。
剩下两个函数我也没搞懂。。。。

示例,目录结构如下:
os模块,os.walk()方法解释与使用
代码如下:

import os

path = '/cx/pyfolder/testfolder/'
file_loc = os.walk(path)
for path, dir, file in file_loc:
    print("遍历一次:\n"+"path是:{}".format(path), "dir是:{}".format(dir), "file是:{}".format(file))

运行之后,输出结果为:
os模块,os.walk()方法解释与使用
可以看到,第一次遍历的是传入的path路径,就是testfolder这个文件夹,并返回了testfolder路径、testfolder下的子文件夹列表、testfolder下的文件列表,第二次遍历的是“1”这个给文件夹,并返回了“1”下面的文件夹列表和文件列表,第第三遍遍历的是“2”这个文件夹,并返回了路径、子文件夹列表,因为没有所以返回为空,文件列表。

下面把topdown这个参数传值为False:

import os

path = '/cx/pyfolder/testfolder/'
file_loc = os.walk(path,topdown=False)
for path, dir, file in file_loc:
    print("遍历一次:\n"+"path是:{}".format(path), "dir是:{}".format(dir), "file是:{}".format(file))

打印结果:
os模块,os.walk()方法解释与使用
可以发现,优先遍历的是“2”这个文件夹,最后才遍历“testfolder”这个文件夹。

如果想获取各个文件夹下文件的路径,可以这样:

import os

path = '/cx/pyfolder/testfolder/'
file_loc = os.walk(path)
file_list = []
for path, dir, file in file_loc:
    print("遍历一次:\n"+"path是:{}".format(path), "dir是:{}".format(dir), "file是:{}".format(file))
    for f in file:
        file_path = os.path.join(path, f)  #  拼接路径和文件名称

        file_list.append(file_path)

print(file_list)

要获取指定后缀名的文件:

import os

path = '/cx/pyfolder/testfolder/'
file_loc = os.walk(path)
file_list = []
for path, dir, file in file_loc:
    print("遍历一次:\n"+"path是:{}".format(path), "dir是:{}".format(dir), "file是:{}".format(file))
    for f in file:
        if f.endswith(".txt"):  # 判断是否以.txt结尾
            file_list.append(f)

print(file_list)

  • 作者:进击的小陈
  • 原文链接:https://blog.csdn.net/c_xiazai12345/article/details/127303445
    更新时间:2023年2月6日08:25:32 ,共 1377 字。