os.walk方法,主要是用来遍历一个目录内各个子目录和子文件。
python的定义格式如下:
def walk(top, topdown=True, onerror=None, followlinks=False):
top参数,是要遍历的目录。
topdown参数,为True的时候,优先遍历top目录。
剩下两个函数我也没搞懂。。。。
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))
运行之后,输出结果为:
可以看到,第一次遍历的是传入的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))
打印结果:
可以发现,优先遍历的是“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)