os.walk(top, topdown=True, onerror=None, followlinks=False)
可以得到一个三元 tupple(dirpath, dirnames, filenames),
第一个为文件路径, 第二个为所有文件夹名, 第三个是所有文件夹下的文件, 它会输出所有的文件和路径
dirpath 是一个 string, 代表目录的路径,
dirnames 是一个 list, 包含了 dirpath 下所有子目录的名字.
filenames 是一个 list, 包含了非目录文件的名字.
这些名字不包含路径信息, 如果需要得到全路径, 需要使用 os.path.join(dirpath, name).
通过 for 循环自动完成递归枚举
- [root:/opt]>$ tree /opt/
- /opt/
- aa
- test
- aa
- file
- 2 directories, 2 files
- #!/usr/bin/python
- # -*- coding: utf8 -*-
- #*************************************************************************
- # File Name: os.walk.py
- # Author: huxianyong
- # Mail: hxy123@163.com
- # Created Time: Wed 21 Dec 2016 12:29:55 PM CST
- #************************************************************************
- import os
- def main():
- file_dir = "/" + os.sep + "opt"
- for i,j,k in os.walk(file_dir):
- print "起始路径为:",i
- print "起始路径下的文件夹为:",j
- print "起始路径下的文件为:",k
- print "\n"
- if __name__ == '__main__':
- main()
- [root:/python]>$ python os.walk.py
起始路径为: //opt
起始路径下的文件夹为: ['test']
起始路径下的文件为: ['aa']
起始路径为: //opt/test
起始路径下的文件夹为: ['aa']
起始路径下的文件为: ['file']
起始路径为: //opt/test/aa
起始路径下的文件夹为: []
起始路径下的文件为: []
可以换另一种方法, 得到的结果相同
- import os
- def main():
- file_dir = "/" + os.sep + "opt"
- for i in os.walk(file_dir):
- print "起始路径为:",i[0]
- print "起始路径下的文件夹为:",i[1]
- print "起始路径下的文件为:",i[2]
- print "\n"
- if __name__ == '__main__':
- main()
也可以以另一种形式展示:
- import os
- def main():
- file_dir = "/" + os.sep + "opt"
- for i,j,k in os.walk(file_dir):
- for h in j:
- print "起始路径下的文件夹为:"
- print(os.path.join(i,h))
- for g in k:
- print "起始路径下的文件为:"
- print(os.path.join(i,g))
- print "\n"
- if __name__ == '__main__':
- main()
- [root:/python]>$ python os.walk3.py
起始路径下的文件夹为:
//opt/test
起始路径下的文件为:
//opt/aa
起始路径下的文件夹为:
//opt/test/aa
起始路径下的文件为
来源: http://www.bubuko.com/infodetail-2640118.html