Python在文件中导入一批jpg图像?

时间:2018-04-18 00:10:09

标签: python-3.x image image-processing batch-processing batch-rename

我尝试根据图片名称将一批图片从文件导入到新的单独文件夹中; 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

1 个答案:

答案 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))