重命名文件后出现“ FileNotFoundError:无此类文件或目录”

时间:2020-09-14 18:40:40

标签: python image operating-system copy

我是Python的新手,正在按数字顺序重命名图像后尝试将照片(.jpg)复制到文件夹中。我编写了以下脚本,将目录中的所有照片(全部32,000张)重命名为它们(杂草):

import os
os.chdir('E:\\weeds')
i=1
for file in os.listdir():
    src=file
    dst="weed"+str(i)+".jpg"
    os.rename(src,dst)
    i+=1

以下是输出命名的示例:

enter image description here

然后,我尝试将其中的前250张照片复制到新目录中,如下所示:

import os, shutil

#Copying files to folders
original_weed = 'E:\\weeds'
train_weed = 'E:\\weeds_train'

#Training dataset: Weeds
fnames = ['weed{}.jpg'.format(i) for i in range(250)]
for fname in fnames:
    src = os.path.join(original_weed, fname)
    dst = os.path.join(train_weed, fname)
    shutil.copyfile(src, dst)

产生以下错误:

FileNotFoundError                         Traceback (most recent call last)
<ipython-input-7-f08fff292dd8> in <module>
     17     src = os.path.join(original_weed, fname)
     18     dst = os.path.join(train_weed, fname)
---> 19     shutil.copyfile(src, dst)

~\anaconda3\lib\shutil.py in copyfile(src, dst, follow_symlinks)
    259         os.symlink(os.readlink(src), dst)
    260     else:
--> 261         with open(src, 'rb') as fsrc, open(dst, 'wb') as fdst:
    262             # macOS
    263             if _HAS_FCOPYFILE:

FileNotFoundError: [Errno 2] No such file or directory: 'E:\\weed0.jpg'

我需要做些什么,以便可以识别要复制的文件?

1 个答案:

答案 0 :(得分:1)

您的代码中有错误-脚本的第一部分为图片命名,其索引从1开始:

os.chdir('E:\\weeds')
i=1
for file in os.listdir():

在代码的下一部分通过range函数的结果进行迭代时,根据您的情况,该函数从0开始,以249结尾。检查docs中的range函数以获取更多信息。

您得到的错误表明目录中没有名为weed0.jpg的文件,这确实是正确的。

最简单的解决方法是在代码的第一部分将i的初始值设置为0,它应该可以正常工作。