作者:灬毋黑色灬_447 | 来源:互联网 | 2023-09-17 21:02
importos#赵鹏删除项目中无用文件有风险,例如#mContext.getResources().getIdentifier(rooms_third_guard_diamon
import os
# 赵鹏 删除项目中无用文件 有风险,例如
#mContext.getResources().getIdentifier("rooms_third_guard_diamond_" + bean.getGuardLevel(), "drawable", mContext.getPackageName()) 过滤掉这种情况
# style.xml中的情况未处理,需手动处理
rootPath = "D:\code\Shiliu_sixrooms_main"
javaDirSet = {""}#java目录的集合
resDirSet = {""}#res目录的集合
javaFileSet = {""}#.java .kt 文件的集合
resFileSet = {""}#drawable layout 目录下文件的集合
styleFileSet = {""}
def getFolderPath(rootPath):
if isinstance(rootPath, str):
if os.path.isdir(rootPath):
dirList = os.listdir(rootPath)
for path in dirList:
totalPath = os.path.join(rootPath, path)
if os.path.isdir(totalPath):
if "build" in path:
continue
if "java" == path:
# print("java -- folder -- " + totalPath)
javaDirSet.add(totalPath)
continue
if "res" == path:
# print("res -- folder -- " + totalPath)
resDirSet.add(totalPath)
continue
if os.path.isdir(totalPath):
getFolderPath(totalPath)
def getFilePath(folderPath):
if isinstance(folderPath, str):
if os.path.isdir(folderPath):
pathList = os.listdir(folderPath)
for path in pathList:
getFilePath(os.path.join(folderPath, path))
elif os.path.isfile(folderPath):
# print(folderPath )
if ".java" in folderPath or ".kt" in folderPath:
# print(folderPath)
javaFileSet.add(folderPath)
if "drawable" in folderPath or "layout" in folderPath:
resFileSet.add(folderPath)
if "styles.xml" in folderPath:
styleFileSet.add(folderPath)
getFolderPath(rootPath)
print("javaDirSet -- " + str(len(javaDirSet)))
for path in javaDirSet:
getFilePath(path)
print("resDirSet -- " + str(len(resDirSet)))
for path in resDirSet:
getFilePath(path)
print("resFileSet -- " + str(len(resFileSet)))
print("javaFileSet -- " + str(len(javaFileSet)))
# for path in javaFileSet:
# print(path)
totalNum = len(resFileSet)
curNum = 0;
for resFilePath in resFileSet:
curNum = curNum + 1
print("剩余条数 ------------ " + str(totalNum - curNum))
if os.path.exists(resFilePath):
# print("resFilePath -- " + resFilePath)
name = os.path.basename(resFilePath)
name = name[:name.index(".")]#截取文件名
isFileUsed = False;
# print(name)
# print("javaFileSet -- " + str(len(javaFileSet)))
# 查询java和kotlin文件是否使用
for path in javaFileSet:
# print("path -- " + path)
if len(path) > 0:
# print("path -- " + path)
if os.path.exists(path):
try:
with open(path, encoding= 'utf-8') as foo:
for line in foo.readlines():
if name in line:
isFileUsed = True
break
except FileNotFoundError as e:
e.filename
if isFileUsed:
break
# 查询drawable 和layout 中的.xml文件是否使用
if isFileUsed == False:
for resPath in resFileSet:
if len(resPath) > 0 and ".xml" in resPath:
# print("path -- " + path)
if os.path.exists(resPath):
try:
with open(resPath, encoding= 'utf-8') as foo:
for line in foo.readlines():
if name in line:
isFileUsed = True
break
except FileNotFoundError as e:
e.filename
if isFileUsed:
break
#查询styles.xml文件是否使用
if isFileUsed == False:
for stylePath in styleFileSet:
if len(stylePath) > 0 and ".xml" in stylePath:
# print("path -- " + path)
if os.path.exists(stylePath):
try:
with open(stylePath, encoding= 'utf-8') as foo:
for line in foo.readlines():
if name in line:
isFileUsed = True
break
except FileNotFoundError as e:
e.filename
if isFileUsed:
break
if isFileUsed == False:
print("remove -- " + resFilePath)
try:
# mContext.getResources().getIdentifier("rooms_third_guard_diamond_" + bean.getGuardLevel(), "drawable", mContext.getPackageName()) 过滤掉这种情况
name = os.path.basename(resFilePath)
name = name[:name.index(".")] # 截取文件名
numStr = name[name.rindex("_") + 1:]
# print("numstr ------- " + numStr)
if len(numStr) > 0 and numStr.isdigit():
print("------------ 不删除 ----------------")
else:
print("------------ 删除 ----------------")
os.remove(resFilePath)
except ValueError as e:
e.args
本文地址:https://blog.csdn.net/qingjiaowodiyiming/article/details/107367047