一、任务说明
将图片名称写入excel,刚开始参考他人博客写了一个但是发现写入时没有按照想要的顺序。因此修改了代码。
总体思想是通过split函数将图名进行分割,获取到图名中的数字使其从小到大排列,再写入excel,由于图名的形式不同,需要进行不同的处理,因此使用到了try函数。
二、代码示例
代码如下(示例):
import os
import re
import xlwt
p="G:/test folder"#
datas=os.listdir('C:/Users/Littlesydney/Desktop/11.4标注文件夹/已标注待测试图片1-30/乱序版')
datas=list(datas)
a = xlwt.Workbook(encoding='utf-8')
s = a.add_sheet('sheet表名',cell_overwrite_ok=True)
def takeNumber(elem): #elem和 em均为获取到的图名
try:# 图名为 b4-(3).jpg的样式
b = elem.split(")")
num = b[0].split("(")
fnum=int(num[1])#一定要化成数型,如果是文本型无法成功进行排序
print(fnum)
return fnum
except:# 图名为 127.jpg的样式
b=elem.split(".")
num=int(b[0])
return num
def takeNumber2(em):
try:
b = em.split("-")
num=b[0].split("b")
fnum=int(num[1])
return fnum
except:
return 0
txts = []
all_data = []
datas.sort(key=takeNumber)# 先对括号内的数字进行排序,权值就是该函数返回的数值
datas.sort(key=takeNumber2)# 再对 b后的数字进行排序,如果没有b开头则默认为 0
i=0
for x in datas:
s.write(i,0,x)
i=i+1
a.save('Exce1表.xls')
print(datas)
三、结果
总结
小白的学习记录,如有问题请大家积极指出。