我尝试根据图片名称将一批图片从文件导入到新的单独文件夹中; 1000_70.jpg - >文件夹70和1200_71.jpg - >文件夹71.然而,当我运行脚本时,它什么也没做。
from PIL import Image
import glob
import os
folder='Desktop/n' # All jpegs are in this folder
imList=glob.glob(folder+'*.jpg') # Reading all images with .jpg
newfold = 'Desktop/n/l' # New folder path
for img in imList: # Loop
im = Image.open(img) # Opening image
fileName, fileExt = os.path.splitext(img) # Extract the filename and
# Extension from path
im.save(newfold+fileName+'*.jpg') #save the image to new folder from
#old folder
答案 0 :(得分:2)
首先,您希望图片的文件名不是路径,使用split
代替splitext
删除父文件夹,然后使用splitext删除扩展名:
os.path.splitext("afdsasdf/fasdfa/fff.jpg")
=> ('afdsasdf/fasdfa/fff', '.jpg')
os.path.split("afdsasdf/fasdfa/fff.jpg")
=> ('afdsasdf/fasdfa', 'fff.jpg')
其次,在保存图像时,您会删除*.jpg
中的野生护理。因为你正在选择多个文件,所以你需要使用glob的野生护理。
第三,您需要提取文件名中的第二个数字(1000_70.jpg
- > 70
)。
所有这些都是你应该有这样的东西:
for img in imList:
im = Image.open(img)
filepath, filenameExt = os.path.split(img)
filename, fileExt = os.path.splitext(filenameExt)
folderNumber = filename.split("_")[1]
im.save("{}/{}/{}".format(newfold, folderNumber, filenameExt))