如何用Python生成含不同日期时间段路径的文件路径列表?
批量收集带日期子目录下的文件路径
你的问题核心是原代码仅能处理单个固定路径,无法遍历/Users/kacper/data_lic/下所有以日期时间命名的子目录,进而批量收集所有content_file文件夹内的文件路径。以下是两种可行的解决方案:
方法一:使用os模块实现遍历筛选
利用目录遍历+路径拼接,筛选出目标路径后收集文件:
import os # 父目录路径 root_dir = '/Users/kacper/data_lic' output_file = 'file_paths.txt' # 一次性打开输出文件,避免频繁IO操作 with open(output_file, 'w', encoding='utf-8') as out_f: # 遍历data_lic下的所有子目录 for dir_name in os.listdir(root_dir): dir_path = os.path.join(root_dir, dir_name) # 判断当前项是否为目录(默认所有日期格式文件夹都是目标子目录) if os.path.isdir(dir_path): # 拼接content_file子目录路径 content_dir = os.path.join(dir_path, 'content_file') # 检查content_dir是否存在且为目录 if os.path.exists(content_dir) and os.path.isdir(content_dir): # 遍历content_dir下的所有文件 for filename in os.listdir(content_dir): file_path = os.path.join(content_dir, filename) if os.path.isfile(file_path): out_f.write(file_path + '\n')
方法二:使用pathlib模块(更简洁)
pathlib的glob方法可直接匹配路径模式,快速定位所有目标文件:
from pathlib import Path # 父目录路径 root_path = Path('/Users/kacper/data_lic') output_file = Path('file_paths.txt') # 匹配所有日期子目录下content_file中的文件 target_files = root_path.glob('*/content_file/*') # 写入文件,仅保留文件路径(排除子目录) with open(output_file, 'w', encoding='utf-8') as out_f: for file in target_files: if file.is_file(): out_f.write(str(file) + '\n')
关键优化说明
- 用
with语句管理文件:自动处理文件打开/关闭,避免资源泄漏,同时比循环内反复打开关闭效率更高(尤其针对12000个文件的场景) - 批量写入:减少IO操作次数,提升处理速度
- 路径校验:增加目录存在性检查,避免因路径不存在引发报错
内容的提问来源于stack exchange,提问作者Kacper
相关产品推荐
相关产品推荐

