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

Python批量重命名目录PNG图片时os.rename执行后文件丢失问题求解

问题原因
  • 核心错误1:os.rename()参数顺序完全颠倒。该函数的正确语法是os.rename(原始文件路径, 目标文件路径),你当前的写法是把还未生成的数字命名路径作为源文件、原有文件作为目标路径,会直接引发覆盖逻辑,导致文件丢失。
  • 核心错误2:直接遍历os.listdir()的实时返回结果。你重命名生成的新数字文件名会被实时加入遍历队列,重复处理刚生成的文件,最终出现一半文件被覆盖的情况,和你遇到的16张文件剩余8张的现象完全吻合。
  • 附加问题:os.listdir()会返回目录下所有条目(包括子目录、隐藏文件、非PNG文件),无过滤逻辑可能引发额外异常。
修复方案

先将所有符合要求的原PNG文件名读取为固定列表,避免遍历实时变动的目录内容,同时修正os.rename()的参数顺序,建议使用os.path.join()拼接路径适配不同操作系统:

import os

data_dir_path = '/content/drive/MyDrive/Fruits/train/Fresh Apples/'
# 提前筛选所有PNG文件,生成固定遍历列表
png_files = [f for f in os.listdir(data_dir_path) if f.lower().endswith('.png')]

for count, filename in enumerate(png_files):
    src = os.path.join(data_dir_path, filename)
    dst = os.path.join(data_dir_path, f"{count}.png")
    os.rename(src, dst)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 14:12:01