我需要一個程序,它將文件名和文件夾的路徑名作爲參數,並直接或間接地搜索文件夾及其中包含的文件夾中的文件。該函數應該返回文件的路徑名(如果找到),或者如果在文件夾或文件夾的任何子目錄中找不到該文件,則返回無。該函數必須是遞歸的。遞歸地返回文件的路徑名
這裏是我的代碼:
def search(fname, path):
for item in os.listdir(path):
next = os.path.join(path, item)
try:
search(next,fname)
except:
return next
它應該看起來像沿着線的東西:
>>>search('fileA.txt', 'test')
'test\\fileA.txt'
>>>search('fileB.txt', 'test')
'text\\folder2\\fileB.txt'
等。 但我只能讓我的代碼找到fileA.txt,不管我告訴它找什麼文件。
我問老師一些幫助,這就是她告訴我說:
**我看到幾個問題:
- 你不必在你的函數的條件,實際上檢查看看你是否找到了這個文件。在改變這一點時,請參閱下一個問題。
- 如果您已將路徑添加到該文件,則fname將與其對應的文件不匹配。在創建文件的完整路徑名之前,您需要檢查文件名,否則您將無法匹配它。
- 你不會對從遞歸調用返回的值做任何事情。那些應該返回路徑或None,並且您不檢查返回的內容。**
你爲什麼用'try' /'except'?我想你正在尋找'if' /'else'。 – 2012-02-23 20:52:07
請詳細說明一下? – AngelE 2012-02-23 20:53:44