Python在目录树中递归搜索单个文件名。如果找不到则返回false

时间:2016-08-31 21:31:01

标签: python recursion filenames os.walk

使用Python,我想以递归方式搜索目录树以获取特定文件名。

**如果找到,请不要打印。

**如果没有找到,则打印一条消息,说明找不到它。

=====这是我到目前为止所没有的错误,但是当找不到文件时没有消息=====

import os
rootDir = 'G:\\some_top_directory\\'
file_name = 'fileOFinterest.txt'
def find_file(file_name,rootDir):
    for dirpath, dirnames, filenames in os.walk(rootDir):
        if file_name in filenames:
            print 'found'

3 个答案:

答案 0 :(得分:1)

找到文件时提前退货;这样,在os.walk()循环完成后,您就知道找不到该文件:

import os

def find_file(name, root):
    for _, _, filenames in os.walk(root):
        if name in filenames:
            return  # found the file, exit early
    print 'Not found'

rootDir = 'G:\\some_top_directory\\'
file_name = 'fileOFinterest.txt'
find_file(file_name, rootDir)

我对_为每次迭代返回的dirpath和目录值都使用了os.walk();否则循环忽略这些和_向读者发出信号。

答案 1 :(得分:0)

if not any(file_name in filenames
           for dirpath, dirnames, filenames in os.walk(rootDir)):
    print file_name, 'not found'

答案 2 :(得分:0)

如果您使用的是Python3.5 +,则可以将**recursive标志一起使用:

import glob
rootDir = 'G:\\some_top_directory\\'
file_name = 'fileOFinterest.txt'
found_files = glob.glob("{}**\\{}".format(rootDir, file_name), recursive=True)
if not found_files:
    # do whatever you need
    pass
else:
    print('found')