python3 os.walk()使用

os.walk() 方法用于通过在目录树种游走输出在目录中的文件名,向上或者向下。

在Unix,Windows中有效。

os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
  • top -- 根目录下的每一个文件夹(包含它自己), 产生3-元组 (dirpath, dirnames, filenames)【文件夹路径, 文件夹名字, 文件名】。

  1. 第一个为起始路径,第二个为起始路径下的文件夹,第三个是起始路径下的文件。

    root是一个string,代表目录的路径,

    dirs是一个list,包含了root下所有子文件夹,

    files 是一个list,包含了root下所有文件。

  2. dirs 和files里不包含路径信息只有文件夹或者文件的名字,如果需要得到全路径,需要使用os.path.join(dirpath, name)

  • topdown --可选,默认没有指定为True,一个目录的的3-元组将比它的任何子文件夹的3-元组先产生 (目录自上而下)。如果topdown为 False, 一个目录的3-元组将比它的任何子文件夹的3-元组后产生 (目录自下而上)。

  • onerror -- 可选,是一个函数; 它调用时有一个参数, 一个OSError实例。报告这错误后,继续walk,或者抛出exception终止walk。

  • followlinks -- 设置为 true,则通过软链接访问目录。

 

文件结构如下:

 

示例代码1:

1 import os
2 targetDir = 'D:\Test1'
3 for root, dirs, files in os.walk(targetDir):
4     print('root = %s, dirs = %s, files = %s' %(root,dirs,files))

结果如下所示:topdown 不写默认为True, 则目录自上而下遍历。

 

示例代码2:

1 import os
2 targetDir = 'D:\Test1'
3 for root, dirs, files in os.walk(targetDir,topdown=False):
4     print('root = %s, dirs = %s, files = %s' %(root,dirs,files))

结果如下所示:topdown 为False时, 则目录自下而上遍历

 

备注:

  1. 当 targetDir 的路径不存在时,结果返回空。
  2. 当 targetDir 是文件而非文件夹时,返回空。
  3. dirs, files 要想得到全路径,需拼接root, 即os.path.join(root, dirs), os.path.join(root, files)
  4. targetDir 下的文件夹个数为所有的root个数 -1,因为root数目中包含了targetDir 

 

posted @ 2018-02-25 21:17  nancy05  阅读(1075)  评论(0编辑  收藏  举报