Python 文件遍历os.walk() pathlib.path

概述

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

pathlib.path() 可以获取路径下的多层级的所有文件,在一个列表里

os.walk()

  • 语法
walk()方法语法格式如下:
    os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
  • 参数

top -- 根目录下的每一个文件夹(包含它自己), 产生3-元组 (dirpath, dirnames, filenames)【文件夹路径, 文件夹名字, 文件名】。

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

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

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

  • 返回值

    该方法没有返回值。
    
  • 实例

     local_path = self.data[“Info"]["local_data_addr"]
     for iroot, idirs, ifiles in os.walk(local_path, topdown=False):
         if not ifiles:
             continue
         exist_files  = list(set(ifiles).union(set(exist_files)))
    
  • 结果

目录下的第一个文件夹路径 文件夹名列表 文件名列表

 /Users/Luke/Desktop/spider/02day  
 ['test'] 
 ['.DS_Store', '02-url_tieba.py', '02day-opener.py']

pathlib()

pathlib 可以比较快捷的把所有要处理的文件()放进列表里返回给我们

from pathlib import Path
base_dir = '/Users/Luke/Desktop/code_here/'
p = pathlib.Path(base_dir)
# 遍历获取改文件夹下面所有的文件

file_list = p.glob('**/*')  #这里可以更改路径,详细见文档

#此时file_list 里的每一个文件名都是绝对路径下的
#是PosixPath('/Users/Luke/Desktop/a.txt') 格式
#所以要用str转一下格式

详细请看pathlib 文档参考

你可能感兴趣的:(Python 文件遍历os.walk() pathlib.path)