概述
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转一下格式
网友评论