对特定文件夹下的所有图片(包括子文件夹)进行重命名,并且按照某种特定格式,含有“复件”字样的在名字开头加a,否则加b。
如果仅仅是上述的要求那是分分钟搞定的事情,难点在于处理带有“副件”的文件名字的处理,按照常理说,如果不看“副件”或者“复件”,剩下的文件名字相同的话,那么重命名后这两幅图应该有相同的名字(除了a,b的区分),因此思路就是:首先将这种情况的一对图片检测出来,然后单独处理,剩下的只含有复件或者不含复件的图片做另一种处理。代码如下,注释部分不用管,仅做测试处理。
# encoding: utf-8
import osimport 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))
来源:CSDN
作者:vicdd
链接:https://blog.csdn.net/vicdd/article/details/52767599