如何用Python 3.6检索主文件夹中子文件夹内指定文件的路径?
Python 3.6 获取指定文件名的所有文件路径的简便方法
嘿,这个需求我平时处理得挺多的,用Python 3.6完全可以轻松搞定,给你两种实用又简便的实现方式:
方法一:用os.walk()遍历目录树
os.walk()是Python标准库自带的工具,能递归遍历目标文件夹下的所有子目录和文件,灵活性很强。
import os # 替换成你的主文件夹实际路径 root_dir = "/your/main/folder/path" target_file = "summary.txt" found_paths = [] # 遍历目录树 for current_dir, _, file_list in os.walk(root_dir): if target_file in file_list: # 拼接完整文件路径 full_path = os.path.join(current_dir, target_file) found_paths.append(full_path) print(full_path) # 如果需要后续处理,直接用found_paths列表就行 # print("所有找到的路径:", found_paths)
简单解释下:os.walk()每次迭代会返回三个值——当前遍历的文件夹路径、该文件夹下的子目录列表(这里用_忽略了)、该文件夹下的所有文件名。我们只需要检查目标文件名是否在当前文件夹的文件列表里,是的话就用os.path.join()拼接出完整路径,存起来或者直接打印都可以。
方法二:用glob.glob()递归匹配(更简洁)
从Python 3.5开始,glob模块就支持递归查找了,Python 3.6当然没问题,这种写法更简洁,几行代码就能搞定。
import glob root_dir = "/your/main/folder/path" # 构造匹配模式:**表示任意层级的子文件夹 search_pattern = f"{root_dir}/**/summary.txt" # recursive=True开启递归查找 found_paths = glob.glob(search_pattern, recursive=True) # 打印所有结果 for path in found_paths: print(path)
这里的**是通配符,配合recursive=True就能遍历所有子目录,直接返回所有符合条件的文件完整路径,非常省心。
小提示
- 如果你用的是Windows系统,路径可以写成原始字符串(比如
r"C:\Your\Main\Folder")或者用双反斜杠\\,避免转义问题 - 如果需要处理大量文件,两种方法效率差不多,
os.walk()适合中途加额外过滤条件(比如只找某个日期之后的文件),glob胜在简洁 - 两种方法都是Python标准库,不需要额外安装第三方包,直接用就行
内容的提问来源于stack exchange,提问作者Bella
相关产品推荐
相关产品推荐

