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
相关产品推荐
相关产品推荐

