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/
我的博客就是我的学习笔记,学习过程中看到好的博客也会转载过来,若有侵权,与我联系,我会及时删除。