Python批量重命名handNNN.jpg为hand0NNN.jpg失败求助(VS Code环境)
问题分析与修复
你的代码没生效的核心原因是条件判断错误:filename[4:].isdigit()这部分,拿hand386.jpg举例,filename[4:]取到的是"386.jpg",包含了.jpg后缀,自然不是纯数字,导致判断不成立,重命名逻辑根本没执行。
修正后的代码
import os # 目标目录 directory = r"C:\Users\anton\Documents\Photos" for filename in os.listdir(directory): # 先筛选符合hand开头、jpg结尾的文件 if filename.startswith("hand") and filename.endswith(".jpg"): # 提取开头hand之后、.jpg之前的部分,也就是数字段 num_part = filename[4:-4] # 检查这部分是否是纯数字 if num_part.isdigit(): number = int(num_part) # 格式化为4位数字(比如386变成0386) new_number = "{:04d}".format(number) new_filename = f"hand{new_number}.jpg" # 拼接完整路径并重命名 old_path = os.path.join(directory, filename) new_path = os.path.join(directory, new_filename) # 可选:打印日志确认操作 print(f"重命名: {filename} -> {new_filename}") os.rename(old_path, new_path)
关键修改点
- 拆分数字提取逻辑:用
filename[4:-4]精准截取hand之后、.jpg之前的部分,确保只拿到数字段 - 修正格式化为4位数字:原来的
{:03d}会把386保留为3位数字,改成{:04d}才会补零变成4位的0386,符合你的需求 - 增加打印日志(可选):方便你确认哪些文件被处理,排查问题更直观
执行代码前建议先备份文件,避免意外情况。
内容的提问来源于stack exchange,提问作者Antonego64
相关产品推荐
相关产品推荐

