Python实现按需创建文件夹并按分组拆分.dat文件的问题求助
问题修正与代码优化
原代码存在两个核心问题:
- 多次赋值
newpath导致所有分组的文件都写入到最后一个赋值的文件夹中 - 重复遍历目标文件,效率低下,且文件夹创建逻辑未与对应分组绑定
以下是符合需求的优化代码:
import os import glob # 基础目录 BASE_DIR = r'C:\Users\DELL\Desktop\python split\test' # 定义分组规则:匹配字符串 -> 文件夹/文件名 GROUP_RULES = { '4375 99': '437599', '4512 95': '451295', '4628 88': '462888' } # 目标文件扩展名 EXTENSION = '.dat' # 遍历所有.dat文件 for filename in glob.glob(f"*{EXTENSION}"): with open(filename, encoding='utf-8') as infile: for line in infile: # 检查当前行属于哪个分组 for match_str, group_name in GROUP_RULES.items(): if match_str in line: # 拼接当前分组的文件夹路径 group_dir = os.path.join(BASE_DIR, group_name) # 仅当匹配到行时才创建文件夹(不存在则创建) if not os.path.exists(group_dir): os.makedirs(group_dir) # 拼接输出文件路径(文件夹下同名.dat文件) output_file = os.path.join(group_dir, f"{group_name}.dat") # 追加写入行内容 with open(output_file, 'a', encoding='utf-8') as outfile: outfile.write(line) # 找到匹配分组后跳出循环,避免重复匹配 break
关键改进点
- 分组规则集中管理:用字典统一维护匹配字符串和对应文件夹/文件名,后续新增分组只需修改字典,无需重复编写遍历逻辑
- 单轮遍历文件:仅遍历一次所有.dat文件,逐行检查分组,提升效率
- 文件夹创建与分组绑定:仅当匹配到对应分组的行时,才检查并创建该分组的文件夹,符合「满足条件才创建」的需求
- 文件路径正确映射:每个分组的文件会写入到与自身同名的文件夹中,不会出现跨分组混存的问题
内容的提问来源于stack exchange,提问作者Miko Efa
相关产品推荐
相关产品推荐

