You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3.5环境下多扩展名文件搜索代码修改请求

解决Python 3.5下搜索指定目录及子目录中特定文件的问题

没问题,我来帮你搞定这个需求!针对Python 3.5环境,我们可以用内置的os模块来实现这个文件搜索功能,它在3.5版本里完全稳定可用,而且逻辑清晰易懂。

完整实现代码

import os

def search_target_files(root_dir, target_substring, allowed_extensions):
    """
    在指定目录及其子目录中搜索符合条件的文件
    :param root_dir: 要搜索的根目录路径
    :param target_substring: 文件名中需要包含的子串
    :param allowed_extensions: 允许的文件扩展名列表(例如['.pro', '.bd3', '.mysql'])
    :return: 符合条件的文件完整路径列表
    """
    matched_files = []
    # 遍历根目录下的所有目录和文件
    for dirpath, _, filenames in os.walk(root_dir):
        for filename in filenames:
            # 检查文件名是否包含目标子串
            if target_substring in filename:
                # 获取文件扩展名(包含前面的点)
                file_ext = os.path.splitext(filename)[1]
                # 检查扩展名是否在允许列表中
                if file_ext in allowed_extensions:
                    # 拼接完整路径并添加到结果列表
                    full_path = os.path.join(dirpath, filename)
                    matched_files.append(full_path)
    return matched_files

# 调用示例
if __name__ == "__main__":
    # 设置你的搜索参数
    root_directory = "/path/to/your/target/directory"  # 替换成实际目录路径
    target_str = "your_substring"  # 替换成你要找的文件名子串
    allowed_exts = [".pro", ".bd3", ".mysql"]
    
    # 执行搜索
    results = search_target_files(root_directory, target_str, allowed_exts)
    
    # 输出结果
    print("找到符合条件的文件:")
    for file_path in results:
        print(file_path)

代码细节说明

  • os.walk(root_dir):这个方法会递归遍历root_dir下的所有子目录,每次返回三个值:当前目录的路径、当前目录下的子目录列表、当前目录下的文件列表。
  • os.path.splitext(filename):用来拆分文件名和扩展名,返回的元组第二个元素就是带点的扩展名(比如.pro),正好和我们的允许列表匹配。
  • 因为是Python 3.5,我们特意避免使用3.6才引入的f-string,用os.path.join来拼接路径,保证跨平台兼容性(Windows、Linux、Mac都能用)。

可选调整:大小写不敏感搜索

如果你需要忽略文件名和扩展名的大小写(比如同时匹配.PRO和.pro),可以修改判断逻辑:

# 把文件名转成小写后检查子串
if target_substring.lower() in filename.lower():
    file_ext = os.path.splitext(filename)[1].lower()
    if file_ext in [ext.lower() for ext in allowed_extensions]:
        # 后续逻辑不变
        full_path = os.path.join(dirpath, filename)
        matched_files.append(full_path)

这样就能实现不区分大小写的搜索了,根据你的实际需求选择即可。

内容的提问来源于stack exchange,提问作者jlt199

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:58:57