批量修改类名一般机遇类名有公共前缀的情况。
1、配置python3 环境
参考链接
配置好以后 打开终端 输入python3 命令查看是否安装好
python3环境查看
2、在项目根目录下创建一个.py可执行文件
cd到项目根目录
终端touch命令创建一个.py文件
比如 touch rename.py
然后把下面的代码复制到rename.py文件中 并根据实际情况修改相关配置(主要修改对应的类名前缀信息 需求改的文件后缀信息 项目根路径以及项目包内容路径等)
import os
# 需要修改的类名前缀
pre_str ='DH_'
# 新的类名前缀
pre_to_str ='NK_'
# 根据需求搜寻以下文件类型(如项目中使用xib storyboard等情况 可以自行添加)
suf_set = ('.h','.m','.swift')
# 项目代码文件根路径
project_path = '/Users/nick/Desktop/DemoTest/DemoTest'
# 项目project.pbxproj文件路径 需要更新配置文件中的类名
pbxpro_path = '/Users/nick/Desktop/DemoTest//DemoTest.xcodeproj/project.pbxproj'
# 文件重命名函数,返回新的文件名
def file_rename(file_path):
root_path = os.path.split(file_path)[0] # 文件目录
root_name = os.path.split(file_path)[1] # 文件名包含扩展名
filename = os.path.splitext(root_name)[0]; # 文件名
filetype = os.path.splitext(root_name)[1]; # 文件扩展名
new_path = os.path.join(root_path, filename.replace(pre_str, pre_to_str) + filetype) # 拼接新路径
os.renames(file_path, new_path) # 文件重命名
returnfilename.replace(pre_str, pre_to_str)
# 定义一个字典 key=旧类名 value=新类名
needModifyDic = {}
# 遍历文件,符合规则的进行重命名
for(root, dirs, files)inos.walk(project_path):
forfile_nameinfiles:
iffile_name.startswith((pre_str,)) and file_name.endswith(suf_set):
old_name = os.path.splitext(file_name)[0]
new_name = file_rename(os.path.join(root, file_name))
needModifyDic[old_name] = new_name
# 遍历文件,在文件中更换新类名的引用
print(needModifyDic)
for(root, dirs, files)inos.walk(project_path):
forfile_nameinfiles:
iffile_name.endswith(suf_set):
print('-----fileName-------'+ file_name)
with open(os.path.join(root, file_name),'r+')asf:
print('========fileName========'+ file_name)
s0 = f.read()
f.close()
forkeyinneedModifyDic:
ifkeyins0:
with open(os.path.join(root, file_name),'r+')asf4:
s1 = f4.read().replace(key, needModifyDic[key])
print(key +' ------> '+ needModifyDic[key])
f4.seek(0)
f4.write(s1)
f4.truncate()
f4.close()
# 替换配置文件中的类名
forkeyinneedModifyDic:
with open(pbxpro_path,'r+')asf:
s0 = f.read()
f.close()
ifkeyins0:
with open(pbxpro_path,'r+')asf2:
s = f2.read().replace(key, needModifyDic[key])
f2.seek(0)
f2.write(s)
f2.truncate()
f2.close()
然后终端执行 python3 rename.py 即可修改相关类名前缀。