Python 脚本 过滤 cocos2dx 项目中 没用过的图片资源

173 阅读1分钟

Python 2.7.3

正则表达式

cocos2dx 项目


#-*- coding: UTF-8 -*- 

import os
import re

# 获取文件夹内所有文件及子文件夹文件
def GetFileList(dir, fileList):
	newDir = dir
	if os.path.isfile(dir):
		fileList.append(dir)
	elif os.path.isdir(dir):
		for s in os.listdir(dir):
			#如果需要忽略某些文件夹,使用以下代码
			#if s == "xxx":
			    #continue
			newDir = os.path.join(dir, s)
			GetFileList(newDir, fileList)
	return fileList

def check():
	print "\r input source file folder: "
	src = raw_input()
	#print "\r input target file folder: "
	#tar = raw_input()
	tar = "C:/Workflow/code/cocosstudio/XXX/cocosstudio"
	code = "C:/Workflow/code/XXXX/src"

	result = []
	filelist = GetFileList(src, [])
	for allDir in filelist:
		if allDir.endswith('.png') or allDir.endswith('.jpg'):
			result.append(allDir)

	csdResult = []
	tarlist = GetFileList(tar, [])
	for allDir in tarlist:
		if allDir.endswith('.csd'):
			csdResult.append(allDir)

	codeResult = []
	codelist = GetFileList(code, [])
	for allDir in codelist:
		if allDir.endswith('.lua'):
			codeResult.append(allDir)

	print 'png length = ', len(result)
	print 'csd length = ', len(csdResult)
	print 'code length = ', len(codeResult)

	count = 0
	for file in result:
		png = os.path.split(file)
		path = png[0]
		name = png[1]

		found = False
		for csd in csdResult:
			fopen = open(csd, 'r').read()
			if name in fopen:
				found = True
				break

		exname = os.path.splitext(name)[0]
		exp = re.compile(r'.*[0-9]$')
		while exp.match(exname):
			exname = re.split('\d+$', exname)[0]
			exname = re.split('\_$', exname)[0]
	
		for code in codelist:
			fopen = open(code, 'r').read()
			if exname in fopen:
				found = True
				break

		if found:
			continue
		else:
			count = count + 1
			print file, 'not found'

	print count, ' file not found'

if __name__ == '__main__':
	check()