通过目录递归的Python
我正在尝试使用os.walk()遍历目录。我目前的执行情况如下:通过目录递归的Python,python,os.walk,Python,Os.walk,我正在尝试使用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(dirna
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
时,尝试立即打印所有目录名,这不会给您提供所需的顺序。不要立即打印子目录,而是在实际位于目录时将其打印出来
例如:
for dirname, dirnames, filenames in os.walk(path):
print()
print(dirname + ":")
for filename in filenames:
print(os.path.join(dirname, filename))
os.walk
的工作方式是,当您在dirnames
中获取目录名时,尝试立即打印所有目录名,这不会给您提供所需的顺序。这比我尝试实现的更有意义。非常感谢你。我误解了os.walk()的内部工作原理。这比我试图实现的更有意义。非常感谢你。我误解了os.walk()的内部工作原理。