Python在目录中递归

2024-04-25 05:24:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用步行操作系统(). 我目前的执行情况如下:

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) + ":")

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

^{pr2}$

我想要的输出是:

.:
./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

如果我递归地这样做,我就可以简单地为找到的每个子目录调用我的函数,但是我很难找到一种优雅的方法来使用步行操作系统(). 在

我的问题:如何使用步行操作系统()


Tags: pathinpytestforosfilenamedirectory
1条回答
网友
1楼 · 发布于 2024-04-25 05:24:06

不要立即打印出子目录,而是在实际使用该目录时将其打印出来。在

例如:

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

os.walk的工作方式是,在dirnames中获取目录名时立即打印所有目录名,这样做不会给您想要的顺序。在

相关问题 更多 >