2016-02-11 78 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