python 图片批量重命名

大兔子大兔子 提交于 2019-11-30 10:38:06

对特定文件夹下的所有图片(包括子文件夹)进行重命名,并且按照某种特定格式,含有“复件”字样的在名字开头加a,否则加b。

如果仅仅是上述的要求那是分分钟搞定的事情,难点在于处理带有“副件”的文件名字的处理,按照常理说,如果不看“副件”或者“复件”,剩下的文件名字相同的话,那么重命名后这两幅图应该有相同的名字(除了a,b的区分),因此思路就是:首先将这种情况的一对图片检测出来,然后单独处理,剩下的只含有复件或者不含复件的图片做另一种处理。代码如下,注释部分不用管,仅做测试处理。

# encoding: utf-8  

import os  
import os.path  
import cv2                   #导入opencv库
rootdir = r'/home/ubuntu/python/cat'    # 指明被遍历的文件夹  
num=0
flag=0
listname=[]
#三个参数:分别返回1.父目录 2.所有文件夹名字(不含路径) 3.所有文件名字  
for parent, dirnames, filenames in os.walk(rootdir):       
    for filename1 in filenames:
                if filename1.find("副件")!=-1:
                    flag=1
#                    print "111111111111111"
    if flag==1:
        for filename2 in filenames:
            if filename2.find("副件")!=-1:
                filenamedl=filename2.strip("副件.jpg")
                filenamedl=filenamedl+".jpg"
                listname.append(filenamedl)
                print filenamedl
                print listname
    for filename in filenames:  #输出文件信息  
        if filename.find(".jpg")!=-1:
            num=num+1
            if num<10:   
                newnamea="a00000" +str(num)
                newnameb="b00000" +str(num)
            elif 10<=num<100:
                newnamea="a0000" +str(num)
                newnameb="b0000" +str(num)
            elif 100<=num<1000:
                newnamea="a000" +str(num)
                newnameb="b000" +str(num)
            elif 1000<=num<10000:
                newnamea="a00" +str(num)
                newnameb="b00" +str(num)
            elif 10000<=num<100000:
                newnamea="a0" +str(num)
                newnameb="b0" +str(num)
            else:
                newnamea="a" +str(num)
                newnameb="b" +str(num)
            if filename in listname:                                  #pei dui de
                for filename3 in filenames:                      
                    if filename3.find("副件")!=-1:
                        if filename.strip(".jpg")==filename3.strip("副件.jpg"):
                            print filename3
                            filenames.remove(filename3)
                            os.rename(os.path.join(parent, filename), os.path.join(parent, newnamea))
                            os.rename(os.path.join(parent, filename3), os.path.join(parent, newnameb))                            
            else:                        #bu pei dui de   2types  1is have fujian 1is none
#               print "not fujian"
                if filename.find("副件")!=-1:
                    os.rename(os.path.join(parent, filename), os.path.join(parent, newnameb))
                else:
                    os.rename(os.path.join(parent, filename), os.path.join(parent, newnamea))
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!