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)可以列出文件或者文件夹的绝对路径
尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/13689652.html