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

如何为复制的文件添加来源子目录名称作为前缀?

实现复制文件时添加来源子目录前缀的技巧

核心思路是从文件的完整路径中提取目标子目录名称,拼接为前缀后生成新文件名,再执行复制操作。以下是修改后的代码及关键说明:

修改后的代码

import os
import glob
import shutil

# 定义基础路径与目标目录
base_dir = '/opt/data/input/IP10'
target_dir = '/opt/data/input/IP10_for_decoder/copy/'

# 确保目标目录存在,不存在则自动创建
os.makedirs(target_dir, exist_ok=True)

# 递归遍历基础路径下的所有文件
for file_path in glob.glob(os.path.join(base_dir, '**', '*.*'), recursive=True):
    # 标准化路径并拆分为目录/文件部分
    path_parts = os.path.normpath(file_path).split(os.sep)
    
    # 定位基准目录"IP10"的位置
    try:
        ip10_index = path_parts.index('IP10')
    except ValueError:
        continue  # 跳过路径不符合预期的文件
    
    # 提取IP10后的两级子目录作为前缀(需确保路径层级足够)
    if len(path_parts) >= ip10_index + 3:
        subdir1 = path_parts[ip10_index + 1]
        subdir2 = path_parts[ip10_index + 2]
        prefix = f"{subdir1}_{subdir2}"
        
        # 生成带前缀的新文件名
        original_name = os.path.basename(file_path)
        new_file_name = f"{prefix}_{original_name}"
        
        # 构建目标文件路径并执行复制
        target_file = os.path.join(target_dir, new_file_name)
        shutil.copy(file_path, target_file)

关键细节说明

  • 路径处理:用os.path.normpath统一路径格式,避免因系统差异导致的拆分错误;通过split(os.sep)将路径拆分为独立的目录/文件节点。
  • 前缀提取:通过index('IP10')定位基准目录,提取其后两级子目录名称并拼接为前缀,匹配你需要的STAT-IP_202211151610_7428_some_files格式。
  • 容错处理:添加try-except和长度判断,避免因路径层级不足或格式异常导致程序崩溃。
  • 目录预创建:os.makedirs(..., exist_ok=True)确保目标目录存在,无需手动提前创建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 17:40:47