如何实现文件名后缀按01-12循环重复?求Python代码帮助
解决文件名按01-12循环命名的问题
原代码的问题分析
- 语法错误:
range [:12]写法完全错误,range的正确用法是range(1,13)这类格式,且这里的判断逻辑完全偏离需求 - 逻辑错误:你写的
"{:02d}".format(count +1) in range [...]会返回布尔值(True/False),导致文件名末尾变成这些字符串,完全不符合01-12的预期 - 缺少循环逻辑:没有实现01到12后重新从01开始的循环机制
修正后的代码
import os def rname(dir_path): os.chdir(dir_path) print("正在重命名文件...") print("当前工作目录:", os.getcwd()) for count, f in enumerate(os.listdir()): # 拆分文件名和后缀 f_name = os.path.splitext(f)[0] ext_name = os.path.splitext(f)[1] # 核心:用取模实现01-12循环,count从0开始,(count%12)得到0-11,加1后转为1-12,再格式化两位数字 cycle_num = "{:02d}".format((count % 12) + 1) # 拼接新文件名:保留原文件名前7位 + 循环序号 + 后缀 new_name = f"{f_name[:7]}{cycle_num}{ext_name}" print(f"{f} → {new_name}") os.rename(f, new_name)
关键说明
- 循环实现:
(count % 12) + 1是核心逻辑,count每增加12,结果就从12回到1,完美实现01-12的循环重复 - 修复了原代码的语法错误,移除了无效的布尔判断
- 保留原文件名前7位的逻辑不变,确保前缀部分不受影响
- 如果只想重命名文件(排除子文件夹),可以在循环里加判断:
if os.path.isfile(f):
内容的提问来源于stack exchange,提问作者w j
相关产品推荐
相关产品推荐

