這並不完全清楚你想做什麼,但我可以提供一個例子,(我認爲)做了足夠的事情,你可以弄清楚如何做你想做的:在每個目錄中打印第三個文件的路徑名名爲「anyname」這正是下面的頂部兩個層次:
for dirpath, dirnames, filenames in os.walk(top):
depth = os.path.relpath(dirpath, top).count(os.pathsep)
if depth == 2 and os.path.basename(dirpath) == "anyname":
print(os.path.join(dirpath, filenames[2]))
你可以讓這個更受修剪walk
有效地連看都不看目錄超過2深:
for dirpath, dirnames, filenames in os.walk(top):
depth = os.path.relpath(dirpath, top).count(os.pathsep)
if depth == 2:
if os.path.basename(dirpath) == "anyname":
print(os.path.join(dirpath, filenames[2]))
dirnames.clear()
或者,甚至更有效率,但更多compl修剪所有未命名爲「anyname」的深度2目錄:
for dirpath, dirnames, filenames in os.walk(top):
depth = os.path.relpath(dirpath, top).count(os.pathsep)
if depth == 1:
dirnames[:] = ["anyname"] if "anyname" in dirnames else []
elif depth == 2:
print(os.path.join(dirpath, filenames[2]))
dirnames.clear()
也許你正在尋找簡單的'os.listdir('/ path/to/dir')'而不是'os.walk '...? – janos 2013-02-13 23:18:37