重命名图像文件时系统找不到指定的文件

问题描述

我在一个具有不同名称文件夹中有1000多个JPG图像。我想将图像重命名为0.JPG,1.jpg,2.jpg ...

我尝试了不同的代码,但出现以下错误

The system cannot find the file specified: 'IMG_0102.JPG' -> '1.JPG'

以下代码是在此链接中找到的代码之一:Rename files sequentially in python

import os
_src = "C:\\Users\\sazid\\Desktop\\snake"
_ext = ".JPG"
for i,filename in enumerate(os.listdir(_src)):
    if filename.endswith(_ext):
        os.rename(filename,str(i)+_ext)

如何解决错误。有更好的代码来按顺序重命名图像文件吗?

解决方法

os.listdir仅返回文件名,不包含目录名。重命名时需要包括它。尝试这样的事情:

import os
_src = "C:\\Users\\sazid\\Desktop\\snake"
_ext = ".JPG"
for i,filename in enumerate(os.listdir(_src)):
    if filename.endswith(_ext):
        src_file = os.path.join(_src,filename)
        dst_file = os.path.join(_src,str(i)+_ext)
        os.rename(src_file,dst_file)
,

只需使用$Matches即可避免头痛

使用glob,您的代码变成这样:

glob
这段代码中的

import os from glob import glob target_dir = './some/dir/with/data' for i,p in enumerate(glob(f'{target_dir}/*.jpg')): os.rename(p,f'{target_dir}/{i}.jpg') 为您提供了扩展名为glob()的文件的找到文件路径的列表,因此,.jpg,{{3}的*.jpg模式}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...