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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 05:35:19