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()

 

打印结果如下

 

posted @ 2020-03-07 20:56  cumtchw  阅读(539)  评论(0编辑  收藏  举报