如何使用Python删除目录下所有txt文件名末尾的10位数字
问题说明
你之前写的代码作用是截断文件末尾的内容,和修改文件名完全无关,因此无法实现需求。
实现思路
- 遍历目标目录下所有
.txt后缀的文件 - 对每个文件名做格式校验,仅处理符合「主名末尾为_加10位数字」规则的文件
- 拆分文件名的主名和后缀,删除末尾的
_+10位数字部分,拼接得到新文件名 - 执行重命名操作,自带重名检测避免覆盖现有文件
实现代码
import os import re # 填写要处理的目录路径,填 "." 代表当前脚本所在目录 target_dir = "." for filename in os.listdir(target_dir): # 跳过非txt后缀的文件 if not filename.endswith(".txt"): continue # 拆分主文件名和后缀 name_part, ext = os.path.splitext(filename) # 校验是否符合 末尾_加10位数字 的格式 match_res = re.match(r"^(.*)_\d{10}$", name_part) if not match_res: continue # 生成新文件名 new_name = f"{match_res.group(1)}{ext}" # 拼接完整路径 old_path = os.path.join(target_dir, filename) new_path = os.path.join(target_dir, new_name) # 先注释重命名相关代码,跑一遍确认输出的新旧文件名符合预期后,再取消注释执行实际操作 # if os.path.exists(new_path): # print(f"跳过{filename}:{new_name}已存在,避免覆盖") # continue # os.rename(old_path, new_path) print(f"待修改:{filename} -> {new_name}")
注意事项
- 第一次运行请先保持重命名代码注释状态,确认打印的修改映射完全符合预期后再取消注释执行,避免误操作
- 正则匹配规则可以保证只有符合命名格式的文件会被处理,不会误改其他txt文件
内容的提问来源于stack exchange,提问作者maximus
相关产品推荐
相关产品推荐

