我是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
以下是输出命名的示例:
然后,我尝试将其中的前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'
我需要做些什么,以便可以识别要复制的文件?
答案 0 :(得分:1)
您的代码中有错误-脚本的第一部分为图片命名,其索引从1开始:
os.chdir('E:\\weeds')
i=1
for file in os.listdir():
在代码的下一部分通过range
函数的结果进行迭代时,根据您的情况,该函数从0开始,以249结尾。检查docs中的range
函数以获取更多信息。
您得到的错误表明目录中没有名为weed0.jpg
的文件,这确实是正确的。
最简单的解决方法是在代码的第一部分将i
的初始值设置为0,它应该可以正常工作。