python中的os.walk()方法学习

"""
os.listdir(path) 只能返回当前path路径下的文件和文件夹,不包含子目录中的内容,并且不包含路径,只是文件或文件夹名字.
os.walk(path)用来遍历一个目录内各个子目录和子文件
每次遍历的对象返回的都是一个三元组(root, dirs, files)
root:指的是当前正在遍历的这个文件夹本身的地址,也就是walk传进去的那个目录地址
dirs:是一个list,内容是该文件夹下所有的子目录的名字,
files:同样是一个list,内容是该文件夹下的所有文件的名字,
这些名字不包括路径信息,如果需要得到全路径,需要使用os.path.join(dirpath, name)
"""
测试目录为
F:aa
----bb
----detect.h
----detect.cpp
----cc
----track.cpp
----test1.txt

1分别打印root  dirs  files的值;

import os
def main():
    # 前面的r是告诉解释器保持字符串的原始值,不要对其中的进行转义,如果不加r,那么路径要改成“F:/aa”或者“F:\aa”
    for root, dirs, files in os.walk(r"F:aa"):
        print(root)
        print(dirs)
        print(files)
        print('------------------------------')
if __name__ == '__main__':
    main()

打印结果如下:

2.也可以用下面的方法打印

import os
def main():
    # 前面的r是告诉解释器保持字符串的原始值,不要对其中的进行转义,如果不加r,那么路径要改成“F:/aa”或者“F:\aa”
    for a in os.walk(r"F:aa"):
        print(a[0])
        print(a[1])
        print(a[2])
        print('------------------------------')
if __name__ == '__main__':
    main()

打印结果和第一种方法是一样的

3.得到子目录的完整路径,得到文件的完整路径

import os
def main():
    # 前面的r是告诉解释器保持字符串的原始值,不要对其中的进行转义,如果不加r,那么路径要改成“F:/aa”或者“F:\aa”
    for root, dirs, files in os.walk(r"F:aa"):
        for dir in dirs:
            print(os.path.join(root, dir))
        print('111111111111111111111')
        for file in files:
            print(os.path.join(root, file))#这里join的时候只需要root和file就能得到完整路径,不需要增加dir
        print('222222222222222222222')
if __name__ == '__main__':
    main()

打印结果如下

作者:cumtchw
出处:http://www.cnblogs.com/cumtchw/
我的博客就是我的学习笔记,学习过程中看到好的博客也会转载过来,若有侵权,与我联系,我会及时删除。

原文地址:https://www.cnblogs.com/cumtchw/p/12437026.html