一、当前情况:
①目前公司的游戏项目,策划用的是excel编写配置。
②游戏的物品需要配置什么icon,支持策划自主配置。
③美术根据策划需要,完成某件物品的icon后,以游戏的物品code来命名,并根据物品分类,提交到约定的文件夹。
excel配置大概长这样
美术icon文件
二、产生的问题:
有些物品icon美术那边可能出现漏做了,但策划还是配置了上去。显示异常,导致报错等其他问题。(当然,这个报错程序那边也要做相应处理,在配置了一个没有的图标时,需要使用一个通用图标,不能出现卡死)
三、处理方法:
①从excel表那里获取icon值,保存为一个A列表
②获取icon名称,分割.png后缀后,保存为另一个B列表
③对比检查两个列表,检查A列表是否存在B列表中不存在的元素。
四、实现:
①这里使用xlrd库来读取excel。
import os
import re
import xlrd
# import pysnooper
# 打开Excel表
testExcel = xlrd.open_workbook('E:\物品表.xlsx')
# 根据Sheet名字获取Sheet
t_item_config_item = testExcel.sheet_by_name('item')
# 获取物品code字段列表与uiicon字段列表,用map函数将他们转成int类型,因为excel获得的可能是str类型的。
uicode = list(map(int, t_item_config_item.col_values(0, start_rowx=7, end_rowx=None)))
# 定义两个列表
normal = []
result = []
②获取美术资源的icon名称,并分割掉.png
def getfilename(path):
f_list = os.listdir(path)
for i in f_list:
# os.path.splitext():或者.png后缀的文件名
if os.path.splitext(i)[1] == '.png':
normal.append(i)
return normal
# 分离.png后缀
def cleanfilename(testlist):
pattern = re.compile(r'\d+')
for i in range(len(testlist)):
result1 = pattern.findall(testlist[i])
result.extend(result1)
return result
③使用循环对比
def contrast(list1, list2):
for i in list1:
if i not in list2:
print(i)
④执行
if __name__ == '__main__':
path = 'E:/item'
getfilename(path)
#print(normal)
cleanfilename(normal)
testdata = list(map(int, result))
contrast(uicode, testdata)
完-------------------------------------------------------------------------------------------------------------------------------------------