欢迎访问宙启技术站
智能推送

Python进阶技巧:如何递归使用ListDir()函数查找特定文件

发布时间:2024-01-04 01:40:26

在Python中,可以使用os模块的listdir()函数来列出指定目录中的所有文件和文件夹。如果需要在目录及其子目录中递归查找特定文件,可以使用递归函数来实现。下面是一个递归使用listdir()函数查找特定文件的示例代码:

import os

def find_files(directory, target_file, result=[]):
    """
    递归查找目录中的特定文件
    :param directory: 需要查找的目录
    :param target_file: 需要查找的文件名
    :param result: 结果列表,默认为空列表
    :return: 结果列表
    """
    files = os.listdir(directory)  # 列出目录下的所有文件和文件夹

    for file in files:
        file_path = os.path.join(directory, file)  # 获取文件的绝对路径

        if os.path.isfile(file_path) and file == target_file:
            result.append(file_path)  # 若找到目标文件,将其路径添加到结果列表中

        elif os.path.isdir(file_path):
            find_files(file_path, target_file, result=result)  # 若是目录,则递归调用自身继续查找

    return result

# 测试
directory = "/path/to/directory"  # 替换为需要查找的目录
target_file = "target.txt"  # 替换为需要查找的文件名

result = find_files(directory, target_file)
if not result:
    print("未找到目标文件!")
else:
    print("找到的目标文件:")
    for file_path in result:
        print(file_path)

在上述示例代码中,find_files()函数接受三个参数:directory为需要查找的目录,target_file为需要查找的文件名,result为结果列表(默认为空列表)。

函数首先使用listdir()函数列出目录中的所有文件和文件夹,并使用os.path.join()函数获取文件的绝对路径。然后,函数通过递归调用自身遍历所有文件和文件夹,若找到目标文件,则将其路径添加到结果列表中。

最后,在调用find_files()函数时,传入需要查找的目录和目标文件名。如果找到目标文件,则打印出文件的路径;如果未找到目标文件,则打印未找到的提示信息。

使用递归函数可以方便地在目录及其子目录中查找特定文件。通过递归调用自身,可以一层一层地遍历目录树,直到找到目标文件。

需要注意的是,在查找文件时,传入的目录路径应该是绝对路径或相对于当前工作目录的路径。若路径不正确,可能会导致无法找到目标文件。

总结起来,递归使用listdir()函数可以方便地查找特定文件。通过编写递归函数,可以根据需要查找目录及其子目录中的各种文件。