Python递归地搜索目录以查找文件的存在

时间:2016-02-11 18:23:51

标签: python recursion

我需要在一个小目录树中搜索特定文件名,如果找到则返回1,否则返回0。

我曾尝试使用os.walk()实现此功能,但我不确定正确的语法。我正在尝试使用以下函数定义作为基础构建函数:

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

这个工作正常,但我需要让它递归。我认为for循环和os.walk的组合是答案,但不确定如何实现。

1 个答案:

答案 0 :(得分:3)

  

os.walk(top,topdown = True,onerror = None,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()为你处理通过子文件夹的递归,如果你的任务是使用显式reusion实现相同的行为,那么你不应该使用os.walk()而是查看{{ 1}}