怎么遍历输出某路径下的所有问价和文件夹?
这个问题和,"指定一个节点, 输出以这个节点作为根节点的这棵树的所有子节点" 一样.
递归可以实现.
如果是叶子节点 (文件) 了, 就输出这个叶子节点的名称, 返回.
否则, 输出这个节点的名称(文件夹), 并以这个结点再次作为根节点, 遍历输出它的所有子节点.
- -- coding: utf-8 --
- import os
- def traverse(f):
- fs = os.listdir(f)
- for f1 in fs:
- tmp_path = os.path.join(f,f1)
- if not os.path.isdir(tmp_path):
- print('文件: %s'%tmp_path)
- else:
- print('文件夹:%s'%tmp_path)
- traverse(tmp_path)
- path = 'F:/source_files/python/'
- traverse(path)
有个问题需要注意的是, 用 os.listdir() 这个函数, 只会返回路径下的所有文件名(而这些文件名不含路径)......
所以要写成绝对路径. 可以用 os.path.join 这个函数.
- In [1]: import os
- In [2]: os.path.join('a','b')
- Out[2]: 'a\b'
也可以调用 os.walk 这个函数.
- import os
- path = 'F:/source_files/python/'
- for fpathe,dirs,fs in os.walk(path):
- for f in fs:
- print(os.path.join(fpathe,f))
返回的是一个三元 tupple(dirpath, dirnames, filenames),
其中第一个为起始路径, 第二个为起始路径下的文件夹, 第三个是起始路径下的文件.
dirpath 是一个 string, 代表目录的路径,
dirnames 是一个 list, 包含了 dirpath 下所有子目录的名字,
filenames 是一个 list, 包含了非目录文件的名字, 这些名字不包含路径信息. 如果需要得到全路径, 需要使用 os.path.join(dirpath, name).
当然, 你也可以使用设计器的组件查找文件组件, 该组件返回的是一个 list
相关帖子
来源: http://www.bubuko.com/infodetail-3004028.html