import os # 查找目录下没有用到的drawable图片 def findDrawable(path): filePath = "F:/workspace/android/app/src/main" keyWord = ["R.string.","@string/"] dirs1 = ["values\\strings.xml","values\\strings-en.xml","values-ja\\strings-ja.xml","values-zh\\strings.xml"] # 记录drawable文件夹下的XML文件名(不带路径) stringUesd = [] # 记录所有的String strings = [] string1 = [] with open(path, 'a', encoding='utf-8') as wf: # 遍历当前目录 for root, dirs, files in os.walk(filePath): # 遍历文件 for file in files: # pathFiles 是路径+文件名=绝对路径数组 pathFiles = os.path.join(root, file) # 查找drawable目录下的xml文件 if ".java" in pathFiles or ".xml" in pathFiles: # 读取每个文件 with open(pathFiles, 'r', encoding='utf-8') as w: # 读取文件的每一行 for lines in w: for dir in dirs1: # 读取非values文件 if dir not in pathFiles: for key in keyWord: # 查找Java文件中的string并分割 if "R.string." in key in lines and "*" not in lines: string = lines.split("R.string.") for i in range(len(string)): if i != 0: str = string[i] if ")" in str: str = str.split(")")[0] if ";" in str: str = str.split(";")[0] if "," in str: str = str.split(",")[0] if "\"" in str: str = str.split("\"")[0] if "<" in str: str = str.split("<")[0] if str not in stringUesd: stringUesd.append(str) elif key in lines and "*" not in lines: # 查找xml文件中的string str = lines.split(key)[1] if "<" in str: str = str.split("<")[0] if "\"" in str: str = str.split("\"")[0] if str not in stringUesd: stringUesd.append(str) else: # 查找string.xml中的string名(做了国际化英文和日文) if "name=" in lines: str = lines.split("\">")[0] if "\"" in str: str = str.split("\"")[1] if str not in strings: strings.append(str) for s in strings: if s not in stringUesd and s not in string1: string1.append(s) wf.write(s) wf.write("\n") if __name__ == '__main__': path = "E:/text/Content.txt" findDrawable(path)
利用Python查找出Android项目中未使用的string
最新推荐文章于 2022-06-15 18:01:19 发布