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

求助:Python实现文件名替换及配对文件字符串生成方法

解决方案

问题分析

你的代码存在三个核心问题:

  • os.listdir 未调用执行,需写成 os.listdir('.')(当前目录)才能获取文件列表
  • 字符串replace方法不支持正则表达式捕获组,要实现带分组的替换得用re.sub
  • 缺少配对文件的分组逻辑,无法将同前缀的1、2号文件关联起来

完整实现代码

import os
import re

# 筛选当前目录下符合目标格式的文件
target_files = [f for f in os.listdir('.') if re.match(r'.*\.rem\.[12]\.gz$', f)]

# 1. 批量生成替换后的文件名(如需实际重命名,取消os.rename注释)
renamed_files = []
for file in target_files:
    new_name = re.sub(r'(.*)\.rem\.(\d)\.gz', r'\1.\2.trim.gz', file)
    renamed_files.append(new_name)
    # os.rename(file, new_name)  # 实际重命名文件时启用

# 2. 生成配对文件字符串
file_groups = {}
for file in target_files:
    # 提取文件的共同前缀(如"sample.rem.1.gz"的前缀是"sample")
    prefix = re.match(r'(.*)\.rem\.[12]\.gz$', file).group(1)
    file_groups.setdefault(prefix, []).append(file)

# 生成替换后的配对字符串
pair_strings = []
for prefix, files in file_groups.items():
    if len(files) == 2:
        renamed_pair = [re.sub(r'(.*)\.rem\.(\d)\.gz', r'\1.\2.trim.gz', f) for f in files]
        pair_strings.append(' '.join(renamed_pair))

# 输出结果
print("替换后的文件名:")
for name in renamed_files:
    print(name)

print("\n配对文件字符串:")
for s in pair_strings:
    print(s)

代码说明

  • 文件过滤:用re.match精准筛选.rem.1.gz或.rem.2.gz格式的文件,避免处理无关文件
  • 正则替换:通过捕获组匹配前缀和数字,将xxx.rem.N.gz格式替换为xxx.N.trim.gz
  • 配对分组:按共同前缀对文件分组,确保同前缀的1、2号文件被关联,生成对应的配对字符串
  • 可选操作:如果需要实际修改系统中的文件名,取消os.rename的注释即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 05:59:56