AI 生成批量重命名脚本怎么验收?先预览冲突,再检查改名前后映射

AI 可以写批量重命名脚本,但先要确认多个文件不会被映射到同一个目标名。把改名规则变成一份可检查的清单,比直接运行模型给出的改名循环更容易发现覆盖风险。

AI 可以写批量重命名脚本,但先要确认多个文件不会被映射到同一个目标名。把改名规则变成一份可检查的清单,比直接运行模型给出的改名循环更容易发现覆盖风险。

需要批量整理文件、但不能覆盖原文件的读者。本文使用 Python 3.11 或以上版本的标准库,先验证一组人工构造的小样本。AI 负责提出实现或解释差异,结果由本地检查决定;这里没有把模型回答当成真实运行结果。

AI 生成批量重命名脚本怎么验收?先预览冲突,再检查改名前后映射

检查批量重命名的冲突与映射前,先定规则

先约定只处理当前目录的普通文件,保留扩展名,按排序后的编号命名。排序规则要明确,否则同一目录在不同运行中可能产生不同编号。

名称比较按 casefold 检查,这是为兼容常见Windows大小写不敏感目录而采用的保守规则。它不代表所有文件系统的真实等价规则;如果原目录已存在仅大小写不同的文件,停止处理。

预览要同时检查计划内部重名与已有文件冲突。把旧名、新名写成映射后,读者可以核对文件数量、扩展名和目标名。本文示例只生成计划,实际执行应另留备份并采用中间名处理互换。

给 AI 的输入要包含什么

把下面这份输入说明和你的实际样本一起交给可用的 AI 编程助手。示例只含虚构数据;对真实材料先去除账号凭据和个人信息。

请写纯Python重命名预览器:输入文件名列表,按字母排序为data_001起编号,保留扩展名;拒绝重复来源、大小写碰撞、目标已存在。不要实际rename。返回old/new映射并给冲突样本。

要求模型保留检查条件,并把它认为缺少的业务定义列出来。若回答改变了输入字段、忽略异常分支或直接删除原材料,先要求修正,再运行。提示词的作用是缩小任务范围,验收仍以代码和数据为准。

保存并运行最小验证程序

下方程序把关键规则和验证用例放在同一个可复跑示例中,便于先理解输入如何变成输出,再用它检查 AI 给出的实现。

新建一个空目录,把下面代码保存为 check.py,在该目录打开终端,运行 python -X utf8 check.py。代码自带示例输入,不需要安装第三方库。

from pathlib import PurePath
def plan(names, occupied=()):
    if any(not isinstance(n,str) or not n or n in {'.','..'} for n in names):
        raise ValueError('来源必须是非空普通文件名')
    keys=[n.casefold() for n in names]
    if len(keys)!=len(set(keys)):
        raise ValueError('来源名称冲突')
    result=[]
    for i,name in enumerate(sorted(names),1):
        if PurePath(name).name!=name or '/' in name or '\\' in name:
            raise ValueError('只接受当前目录文件名')
        new=f'data_{i:03d}{PurePath(name).suffix}'
        result.append((name,new))
    targets=[n.casefold() for _,n in result]
    if len(targets)!=len(set(targets)) or set(targets)&{x.casefold() for x in occupied}:
        raise ValueError('目标名称冲突')
    return result
good=plan(['b.csv','a.csv'])
assert good==[('a.csv','data_001.csv'),('b.csv','data_002.csv')]
print('preview',good)
try:
    plan(['a.csv'],['DATA_001.csv'])
except ValueError as e:
    print('blocked',e)
else:
    raise AssertionError('必须拦住覆盖')

怎样判断结果符合要求

预览应包含两条映射,a.csv先于b.csv。加入已存在的DATA_001.csv后必须抛出冲突;不能一边报冲突,一边仍改动部分文件。

下方是这份最小示例在本地执行得到的输出。它验证示例程序与断言的关系,不代表任何 AI 模型一次就能生成同样代码,也不构成性能或生产可靠性结论。

preview [('a.csv', 'data_001.csv'), ('b.csv', 'data_002.csv')]
blocked 目标名称冲突

同扩展名不是重复文件。本例依据名称排序分配编号,不根据文件内容判断是否相同。

模型若使用Path.rename直接覆盖目标,即使小样本成功,也没有兑现预览契约。把IO动作与计划函数分开可以先审查再执行。

哪些失败必须停下来处理

网络目录可能存在大小写规则、锁文件和权限差异,纯名称列表无法证明实际改名会成功。

文件名交换A→B、B→A需要临时名称与恢复机制;不能套用一条rename循环。

目录在预览后新增文件会令旧计划失效。执行前重新核对来源、目标和内容哈希,出现变化则重新预览。

空名称以及 .、.. 不是本例允许的普通文件名,预览阶段直接拒绝,不把它们当成可改名的来源。

接入自己的任务前再核对一次

真实执行时保留映射CSV,记录每项完成状态,失败后按映射恢复。不要只保存最终“完成”提示。

若业务命名依赖日期或客户字段,把字段来源和缺失值规则写清;AI不得从文件内容臆造日期。

资料与适用范围

Path.name、Path.suffix 可提取文件名与扩展名,rename 涉及真实文件系统操作。以下链接核对于 2026-10-03;运行环境及额外依赖按本文前述说明。

相关基础可阅读 Cursor 怎么安全删除项目文件?查引用、审查命令并验证构建。本文的重点是检查批量重命名的冲突与映射,可以把两项检查作为不同步骤保留。

Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/33322.html

赞 (0)
AI小管家的头像AI小管家
用ChatGPT写读后感:把原文依据、个人感受与疑问连起来
上一篇 2小时前
AI 生成的单元测试有没有抓到错误?注入三种错误检查断言
下一篇 2小时前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部