Python列出指定目录下的子目录/文件或者递归列出
1、python只列出当前目录(或者指定目录)下的文件或者目录条目
import os files,dirs=[],[] for item in os.listdir(): if os.path.isfile(item): files.append(item) elif os.path.isdir(item): dirs.append(item)
### os.listdir()中可以指定目录,默认为当前目录
### os.path.abspath(item)可以列出文件或者文件夹的绝对路径
### item.endswith(".tar.gz") 可以只看.tar.gz结尾的条目
2、使用os.walk('.')递归列出所有子目录,必须指定目录参数,及所有子文件条目,逻辑原理如下
首先os.walk('.')会返回一个对象,包括多个三元tupple(root, dirs, filenames),递归把一个目录及子目录遍历完:
for item in os.walk('.'): print(item) #######返回的逻辑如下############ ('.', ['A', 'B'], ['a.py', 'b.py']) ('.\\A', ['Adir01', 'Adir02'], ['A1.txt']) ('.\\A\\Adir01', ['AAAAA'], ['AA_5201351.txt']) ('.\\A\\Adir01\\AAAAA', [], ['qq_5201351.txt']) ('.\\A\\Adir02', [], []) ('.\\B', ['Bdir01', 'Bdir02'], ['w1.txt']) ('.\\B\\Bdir01', [], []) ('.\\B\\Bdir02', [], [])
3、因此可以通过如下方式递归列出指定目录下所有的子目录,及所有的子文件
import os all_files,all_dirs=[],[] for root, dirs, files in os.walk('.'): for file in files: all_files.append(os.path.join(root,file)) for dir in dirs: all_dirs.append(os.path.join(root,dir)) ## 同样,使用os.path.abspath(NAME)可以列出文件或者文件夹的绝对路径
尊重别人的劳动成果 转载请务必注明出处: