2016-02-11 303 views
-1

我需要搜索特定文件名的目錄樹,如果找到則返回1,否則返回0。Python遞歸搜索目錄以查找文件的存在

我試圖用os.walk()來實現它,但我不確定正確的語法。我試圖建立一個函數使用以下函數定義作爲基礎:

def file_find(filename, search_path): 
    file_found = 0 
    if exists(join(path, filename)): 
     return 1 
    else: 
     return 0 

這工作正常,但我需要使其遞歸。我認爲for循環和os.walk的結合是答案,但不知道如何實現。

回答

3

os.walk(頂部,自上而下=真,的onerror =無,followlinks = FALSE)通過遍歷樹無論是自上而下 或自下而上生成 在目錄樹中的文件名。對於在目錄頂部 (包括頂部本身)根的樹的每個目錄,它產生一個3元組(dirpath,dirnames中, 文件名)

所以......

def find_file(filename, search_path): 
    for dirpath, dirnames, filenames in os.walk(search_path): 
     if filename in filenames: 
      return 1 
    return 0 

os.walk()需要通過子文件夾爲你遞歸,如果你的任務是使用明確的迴避來實現相同的行爲,那麼你不應該使用os.walk()而是看看os.listdir()

+0

完美的,非常感謝。看起來我用os.walk()所遇到的問題實際上是我的腳本中的其他問題,現在通過簡化來實現它。 – btongeorge