如何在python中使用文件夹名作为前缀来重命名多个图像文件



我有一个名为" Cat "的文件夹,其中包含许多.jpg文件,如069.jpg, 208.jpg, 1134.jpg, img_thermal_158.jpg等。

我想把它们重命名为cat_069.jpg, cat_208.jpg, cat_1134.jpg, cat_img_thermal_158.jpg等等。

我如何用python实现这一点?我在Windows 10机器上通过Anaconda使用Jupyter笔记本来运行python。

我的尝试,这是不工作

import os
pre = "cat_"
[os.rename(f, pre + str(f)) for f in os.listdir('../Dataset/Train/Cat') 
if f.endswith(".jpg")]

它给出这个错误,


---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
~AppDataLocalTempipykernel_75362602524164.py in <cell line: 4>()
2 
3 pre = "cat_"
----> 4 [os.rename(f, 'cat_' + str(f)) for f in os.listdir('../Dataset/Train/Cat') 
5 if (f.endswith(".jpg"))]
~AppDataLocalTempipykernel_75362602524164.py in <listcomp>(.0)
2 
3 pre = "cat_"
----> 4 [os.rename(f, 'cat_' + str(f)) for f in os.listdir('../Dataset/Train/Cat') 
5 if (f.endswith(".jpg"))]
FileNotFoundError: [WinError 2] The system cannot find the file specified: '069.jpg' -> 'cat_069.jpg'

我不知道哪里错了,因为这绝对是正确的道路。我也试过绝对路径,"C:UsersmeJupiter_NotebooksDatasetTrainCat">

[os.rename(f, "cat_" + str(f)) for f in os.listdir('C:\Users\me\Jupiter_Notebooks\Dataset\Train\Cat') if f.endswith(".jpg")]
FileNotFoundError                         Traceback (most recent call last)
~AppDataLocalTempipykernel_7536980149228.py in <cell line: 1>()
----> 1 [os.rename(f, "cat_" + str(f)) for f in os.listdir('C:\Users\me\Jupiter_Notebooks\Dataset\Train\Cat') if f.endswith(".jpg")]
~AppDataLocalTempipykernel_7536980149228.py in <listcomp>(.0)
----> 1 [os.rename(f, "cat_" + str(f)) for f in os.listdir('C:\Users\me\Jupiter_Notebooks\Dataset\Train\Cat') if f.endswith(".jpg")]
FileNotFoundError: [WinError 2] The system cannot find the file specified: '069.jpg' -> 'cat_069.jpg'

我也在下面试过,产生了类似的错误。

import shutil
import os
newdir="C:\Users\me\Jupiter_Notebooks\Dataset\Train\Cat\"
for f in (os.listdir('C:\Users\me\Jupiter_Notebooks\Dataset\Train\Cat\')):
if f[-4:]==(".jpg"):
if os.path.isdir(newdir):
shutil.copy(f,newdir+"/"+"Cat_"+f)
else:
os.mkdir(newdir)
shutil.copy(f,newdir+"/"+"Cat_"+f)

cwd = os.getcwd()
cwd
'C:\Users\me\Jupiter_Notebooks\Dataset'
# my default os.listdir() is
os.listdir()
['.ipynb_checkpoints',
'Test',
'Thermal_image_notebook.ipynb',
'Train'...

有人能告诉我我需要改变我的代码,请吗?谢谢你。

注:这里是文件,https://github.com/bluetail14/Thermal_data_images_project

在我看来,最简单的解决方案是将cwd更改为包含文件的目录,重命名文件,并在必要时将cwd更改回来:

cwd = os.getcwd() # remember the old one
os.chdir('../Dataset/Train/Cat')
pre = "cat_"
[os.rename(f, pre + f) for f in os.listdir('.') if f.endswith(".jpg")]
os.chdir(cwd)

相关内容

最新更新