先看os.walk(path)的返回值:
`In [6]: for root_dir, dir_names, file_names in os.walk("C:\Users\Administrator"):
...: print(root_dir,type(root_dir))
...: print(dir_names,type(dir_names))
...: print(file_names, type(file_names))
...: import sys
...: sys.exit()
# 下面为输出结果
C:\Users\Administrator <class 'str'>
['.ipython', '.ssh'] <class 'list'>
['.bash_history', '.gitconfig'] <class 'list'>`
可以发现os.walk(path)的返回值为一个迭代器,迭代的每一个元素都是一个三元组,元组的构成元素分别为:
- root_dir:当前获取文件和目录的根目录,数据类型为字符串
- dir_names:root_dir下的所有目录,数据类型为列表
- file_names:root_dir下的所有文件,数据类型为列表
所以我们就得到了获取某个目录及其子目录下所有文件或目录的代码写法
获取某个目录及其子目录下所有文件
def get_all_files(root):
all_files = []
for root_dir, dirnames, filenames in os.walk(root):
for i in filenames:
all_files.append(root_dir + i)
print(all_files)
return all_files
获取某个目录及其子目录下所有目录
def get_all_dirs(root):
all_dirs = []
for root_dir, dirnames, filenames in os.walk(root):
for i in dirnames:
all_dirs.append(root_dir + i)
print(all_dirs)
return all_dirs