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

解析含文件列表的TXT文件 提取SDU、SCI目录及文件名用于本地比对

问题根因
  • 原代码的pathSDU、pathSCI变量赋值后不会主动清空,只要后续任意位置出现匹配的文件名,就会关联上最后一次记录的路径,没有校验当前是否真的处于对应目标目录下
  • 两个目录判断分支独立运行,没有互斥逻辑,可能出现状态冲突
  • 直接用整行作为字典key,行尾换行符、前后空白会导致后续比对失效
修改后可运行代码
import glob
import os

files_dict = {}

for file_path in glob.glob('/foo/bar/catalog/*.txt'):
    # 每次处理新文件重置状态,避免跨文件污染
    current_active_dir = None
    current_dir_path = ""
    print(f'opening file {file_path}')
    
    with open(file_path, 'r', encoding='utf-8') as f:
        for line in f:
            line = line.strip()
            if not line:
                continue  # 跳过空行
            
            # 判断是否是目录行
            if line.endswith(':'):
                # 匹配SDU目标目录
                if '/ACS/SDU_:' in line:
                    current_active_dir = 'SDU'
                    current_dir_path = line.rstrip(':')
                # 匹配SCI目标目录
                elif '/ACS/ScienceDataFile:' in line:
                    current_active_dir = 'SCI'
                    current_dir_path = line.rstrip(':')
                # 其他目录,重置状态
                else:
                    current_active_dir = None
                    current_dir_path = ""
                continue
            
            # 仅在目标目录内处理对应文件
            if current_active_dir == 'SDU':
                if 'SDU__DACS' in line and 'manifest' not in line:
                    # 提取纯文件名:按空格分割取最后一段
                    file_name = line.split()[-1]
                    files_dict[file_name] = current_dir_path
            elif current_active_dir == 'SCI':
                if 'SCI__DACS' in line and 'manifest' not in line:
                    file_name = line.split()[-1]
                    files_dict[file_name] = current_dir_path
核心优化说明
  • 新增状态标记current_active_dir,只有当前明确处于SDU/SCI目录下时,才会处理对应格式的文件,遇到其他目录时自动清空状态,彻底避免跨目录关联
  • 每次打开新文件自动重置所有状态,不会出现不同文件之间的状态串扰
  • 自动处理行首尾空白、目录末尾的冒号,提取纯文件名作为字典key,后续和本地文件比对更方便
  • 简化分支逻辑,避免原代码中两个独立if分支可能带来的冲突问题

内容的提问来源于stack exchange,提问作者stickmann

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:48:03