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)可以列出文件或者文件夾的絕對路徑

 

 

尊重別人的勞動成果 轉載請務必注明出處:https://www.cnblogs.com/5201351/p/13689652.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM