博客园  :: 首页  :: 管理

Python列出指定目录下的子目录/文件或者递归列出

Posted on 2020-09-18 10:08  520_1351  阅读(4845)  评论(0编辑  收藏  举报

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