需求背景: 要检查imageset里面2x图和3x图的缺失问题
检查指标:
1.imageset里面的Contents.json 里, 是否2x和3x都有对应的filename
2.有filename的情况下,imageset里是否有对应的图片
毕竟不是专门写python的 , 如果有更优化的写法, 欢迎各位大佬指教
#-*- coding: utf-8 -*-
import sys
import os
import json
import time
#不加中文报错
# reload(sys)
# sys.setdefaultencoding('utf-8')
############################# 分割线 [ 检查参数 创建log日志 ] ###################################
#检查 要搜索的路径是否存在
if len(sys.argv) == 1 or len(sys.argv) > 3:
print("参数错误 ,程序退出")
print("格式: python checkImg 要检查的目录 白名单(可不设置)")
print("示例: python checkImg.py ./ 或者 python checkImg.py srcs/app/ ./white_list.txt")
exit()
#检查 是否是目录
if not os.path.exists(sys.argv[1]):
print("要检查的不是目录 ,程序退出")
exit()
#删除老的 log文件
if os.path.exists('checkImg_result.log'):
os.remove('checkImg_result.log')
#创建log文件
f_check=open('checkImg_result.log','a')
############################# 分割线 [ 全局变量 ] ###################################
CHECK_PATH=sys.argv[1] #要检查的路径
WHITE_LIST=""
if len(sys.argv) == 3 and os.path.isfile(sys.argv[2]):
WHITE_LIST=sys.argv[2]
print ("检查路径: ",CHECK_PATH)
print ("白名单路径: ",WHITE_LIST)
############################# 分割线 [ 自定义方法 ] ###################################
#拼接 find 和 加载白名单
def get_command_line_find_str():
find_command_line = "find %s" %(CHECK_PATH)
if WHITE_LIST != "":
with open(WHITE_LIST) as f:
content = f.readlines()
for white_path in content:
white_path = white_path.strip()
find_command_line= find_command_line +" -path %s -prune -o" %(white_path)
find_command_line=find_command_line+" -name *.imageset -type d -print"
return find_command_line
else :
command_line_find = "find %s -name *.imageset -type d" % (CHECK_PATH)
find_command_line=find_command_line+" -name *.imageset -type d"
return command_line_find
# 检查
def check2x3x(contents_path):
# print contents_path
with open(contents_path, 'r') as jsonfile:
json_string = json.load(jsonfile)
images = json_string['images']
for image in images:
filename = image.get('filename')
# print 'filename: ',filename
scale = image.get('scale')
# print 'scale: ',scale
if scale != "1x" :
if filename == None:
# print "空"
err_str = "ERROR 1 json内容缺失 : 路径: %s ,缺少 @%s filename\n" %(contents_path,scale)
f_check.write(err_str)
else:
# print "非空"
#filename 不为空 就检查对应图片是否存在
#拼图片路径
imageset_dir=os.path.dirname(contents_path)
# print "imageset_dir: "+imageset_dir
imgPath=imageset_dir+"/"+filename
# print "imgPath :"+imgPath
#图片不存在
if not os.path.exists(imgPath):
err_str = "ERROR 2 图片缺失 : 路径: %s ,缺少 %s 图片\n" %(imageset_dir,filename)
f_check.write(err_str)
############################# 分割线 [ 流程 ] ###################################
def main():
print ("-------开始检查-------")
#拼接 find 命令 ,加载白名单
command_line_find = get_command_line_find_str()
print ("查找命令: ",command_line_find)
f = os.popen(command_line_find)
imageset_paths = f.readlines()
# print imageset_paths
print ("Content.json数量 : %d" %(len(imageset_paths)))
for index,imageset_path in enumerate(imageset_paths):
content_json_path = imageset_path.strip()+'/Contents.json'
# print content_json_path
check2x3x(content_json_path)
print('\r当前进度:{0}/{1} '.format(index+1,len(imageset_paths)), end='')
print('\n-------检查完成-------!')
f_check.close()
os.system("open checkImg_result.log")
if __name__ == '__main__':
main()
下一篇: 检查iOS工程imageset图片缺失(shell版)