Python递归搜索目录以查找文件的存在
问题描述:
我需要搜索特定文件名的目录树,如果找到则返回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的结合是答案,但不知道如何实现。
答
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()
完美的,非常感谢。看起来我用os.walk()所遇到的问题实际上是我的脚本中的其他问题,现在通过简化来实现它。 – btongeorge