MAC iOS批量修改类名

批量修改类名一般机遇类名有公共前缀的情况。

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 即可修改相关类名前缀。

你可能感兴趣的:(MAC iOS批量修改类名)