Skip to main content
 首页 » 编程设计

Python 在目录中递归

2025年05月04日12mayingbao

我正在尝试使用 os.walk() 遍历目录。我目前的实现如下:

print(".:") 
for dirname, dirnames, filenames in os.walk(path): 
    for filename in filenames: 
        print(os.path.join(dirname, filename)) 
    print() 
    for subdirname in dirnames: 
        print(os.path.join(dirname, subdirname) + ":") 

对于“路径”,我得到以下输出:

.: 
./File5.py 
./File 3.py 
./File 1.py 
 
./directory 2: 
./directory 4: 
./Test Directory: 
./directory 2/player_career.csv 
./directory 2/File2.py 
 
./directory 4/test.txt 
./directory 4/Homework4.py 
 
./directory 4/__pycache__: 
./directory 4/__pycache__/File4.cpython-32.pyc 
 
 
./Test Directory/Test 3: 
./Test Directory/Test 2: 
./Test Directory/Test 3/ttt 
 
./Test Directory/Test 2/Untitled Document 2 
./Test Directory/Test 2/Untitled Document 
 
./Test Directory/Test 2/Untitled Folder: 
./Test Directory/Test 2/Untitled Folder/jjj 

我正在寻找的输出是:

.: 
./File5.py 
./File 3.py 
./File 1.py 
 
./directory 2: 
 
./directory 2/player_career.csv 
./directory 2/File2.py 
 
./directory 4: 
 
./directory 4/test.txt 
./directory 4/Homework4.py 
 
./directory 4/__pycache__: 
 
./directory 4/__pycache__/File4.cpython-32.pyc 
 
./Test Directory: 
 
./Test Directory/Test 2: 
 
./Test Directory/Test 2/Untitled Document  
./Test Directory/Test 2/Untitled Document 2 
 
./Test Directory/Test 2/Untitled Folder: 
 
./Test Directory/Test 2/Untitled Folder/jjj 
 
./Test Directory/Test 3: 
 
./Test Directory/Test 3/ttt 

如果我以递归方式执行此操作,我将能够简单地为我找到的每个子目录调用我的函数,但是我无法找到一种使用 os.walk() 进行此操作的优雅方法。

我的问题:如何使用 os.walk() 获取前面的输出

请您参考如下方法:

不要立即打印出子目录,而是当您实际位于该目录时打印出它们。

一个例子:

for dirname, dirnames, filenames in os.walk(path): 
    print() 
    print(dirname + ":") 
    for filename in filenames: 
        print(os.path.join(dirname, filename)) 

os.walk 的工作方式,尝试在您在 dirnames 中获取所有目录名称时立即打印它们不会给您想要的顺序.