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)