以下示例通過目錄「遍歷」,打印所有文件的名稱,並在所有目錄上遞歸調用自身。文件名和路徑故障
import os
def walk(dir):
for name in os.listdir(dir):
path = os.path.join(dir,name)
if os.path.isfile(path):
print path
else:
walk1(path)
os.path.join` takes a directory and a file name and joins them into a complete path.
我練習:修改步行使,而不是打印文件的名稱,它返回名稱的列表。
有人可以解釋這個函數每行做什麼?我有一個好主意,但是當它到達這條線時:else: walk(path)
,這讓我不知所措,因爲沒有任何解釋。在這個練習中,我能想到這個更改爲列表中的唯一方法是:
def walk1(dir):
res = []
for name in os.listdir(dir):
path = os.path.join(dir,name)
if os.path.isfile(path):
res.append(path)
else:
walk1(path)
return res
我的輸出如此多的輸出線只是區區數去。我做得對嗎?
另外,下一個練習將討論_os_中稱爲_walk_的函數,而且我需要然而,閱讀有關這方面的文件;我需要打印給定目錄及其子目錄中文件的名稱。如果我正確解釋這個問題,那麼res.extend也不是那麼簡單嗎? –