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

Python批量复制activities.json并重命名时FileExistsError报错如何解决

问题原因
  • 路径配置错误:代码中复制文件的目标路径是C:/Users/Adam/Desktop/Linkedin analyze/tableau bsp/1/3,但后续重命名用的路径是C:/Users/A.Abboudi/Desktop/Linkedin analyze/tableau bsp/1/3/activities.json,两个用户目录不一致,导致重命名操作没有命中刚复制到目标目录的文件。且从报错堆栈看,实际执行的重命名操作第一个参数是原文件的绝对路径abs_path,相当于直接修改源目录的文件,逻辑完全偏离需求。
  • 重命名目标路径缺失:重命名的第二个参数只有纯数字m,没有拼接目标目录路径,会默认把文件重定向到Python脚本的当前工作目录,若该目录下已有同名文件就会触发FileExistsError。
  • 复制逻辑冗余:先复制同名文件到目标目录再重命名的逻辑,会导致第二次复制时,目标目录中还存在上次没改名成功的activities.json,本身就会触发文件存在冲突。
解决方法

直接在复制阶段就指定目标文件的最终名称,不需要额外执行重命名操作,同时统一路径配置,提前校验目标目录是否存在。如果需要动态输入成员ID,把match_id_suffix的赋值改成match_id_suffix = input("请输入目标成员ID: ")即可。

修正后代码如下:

import os
import shutil

rootDir = 'C:/Users/Adam/Desktop/Linkedin/linkedin_hb_ma'
# 提前定义统一的目标目录,避免硬写出错
target_dir = 'C:/Users/Adam/Desktop/Linkedin analyze/tableau bsp/1/3'
# 确保目标目录存在,不存在则自动创建
os.makedirs(target_dir, exist_ok=True)
file_counter = 1
# 要匹配的成员ID后缀
match_id_suffix = "1eb95ebb-d87d-Xd7-8c84-Xc"

for dirName, _, fileList in os.walk(rootDir):
    if dirName.endswith(match_id_suffix):
        for file in fileList:
            if file == "activities.json":
                src_path = os.path.join(dirName, file)
                print(f'找到匹配文件: {src_path}')
                # 直接指定最终目标路径,无需单独执行重命名
                dst_path = os.path.join(target_dir, f"{file_counter}.json")
                shutil.copy(src_path, dst_path)
                print(f"已复制到: {dst_path}")
                file_counter += 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:54:03