python学习笔记-解决OC文件重名冲突
2016-11-01 11:46
501 查看
本人用于解决动态库第三方冲突,添加前缀,防止类名重复
#!/user/bin/python # -*- coding:UTF-8 -*- import os import fileinput def prefixFiles(path,prefix): #修改当前目录下全部文件的前缀 - 不包括子文件夹 list = [] files = os.listdir(path) # 路径可以自己 flag = True; for name in files: suffix = ['.m', '.cpp', '.h', '.mm'] a = os.path.splitext(name) if a[1] in suffix: tmpStr = a[0] if tmpStr.startswith(prefix, 0, 4): #如果包含prefix tup = (name[len(prefix):name.find('.')], name[0:name.find('.')]) list.append(tup) else: if name.find("+") != -1: #分类文件处理 pass else: newname = prefix + a[0] + a[1] if flag: os.chdir(path) flag = False tup = (name[0:name.find('.')], newname[0:newname.find('.')]) list.append(tup) os.rename(name, newname) return list def prefixAllFiles(path,prefix): #修改当前目录及子目录下文件 list = [] list.extend(prefixFiles(path,prefix)) for root, dirs, files in os.walk(path): list.extend(prefixFiles(root,prefix)) for tmp in list: #去除重复 while list.count(tmp) > 1: list.remove(tmp) return list def replaceSingleDirectory(filepath,tuple): files = os.listdir(filepath) for name in files: suffix = ['.m', '.cpp', '.h', '.mm'] a = os.path.splitext(name) if a[1] in suffix: for tmp in tuple: path = os.path.join(filepath, name) print (path, tmp[0], tmp[1]) os.chdir(filepath) # replaceText2(name,tmp[0], tmp[1]) replaceText(path, tmp[0], tmp[1]) def replaceMutableDirectory(path,tuple): replaceSingleDirectory(path,tuple) for root, dirs, files in os.walk(path): replaceSingleDirectory(root,tuple) def replaceText(filepath,oldtext,newtext): tmp = fileinput.input(filepath,inplace=1) tmp.nextfile() for line in tmp: # print fileinput.lineno() if judgeIsOCdefine(line,oldtext,newtext): line = line.replace(oldtext,newtext) print line.strip("\n") else: print line.strip("\n") def judgeIsOCdefine(str,oldtext,newtext): if str.find(oldtext) != -1 and str.find(newtext) == -1 : if len(str) <= len(oldtext): return False tmp = str[str.find(oldtext) + len(oldtext):str.find(oldtext) + len(oldtext) + 1] if tmp == " ": return True elif tmp == ":": return True elif tmp == ";": return True elif tmp == ")": return True elif tmp == "*": return True elif tmp == ".": return True elif tmp == ">": return True elif tmp == ",": return True else: if str.find("@implementation") != -1: return True elif str.find("@interface") != -1: return True else: return False def replaceText2(name,oldtext,newtext): with open(name, "r+") as f: d = f.read() d.replace(oldtext, newtext) f.write(d) def renameOC(path,prefix): tupList = prefixAllFiles(path, prefix) #tuplist (oldname,newname) replaceMutableDirectory(path, tupList) print "success" # find_file_text(r'C:\Program Files\Microsoft Visual Studio 9.0\VC\crt\src','mainCRTStartup') path = raw_input("请输入文件夹路径:").strip() renameOC(path,"HX_")
相关文章推荐
- 学习笔记:调用js文件冲突问题解决方案
- python学习笔记-批量添加OC文件前缀
- python2学习笔记之mysql连接,中文乱码的解决和文件api的使用
- Python学习笔记---模块;文件与文本处理
- python学习手册笔记--第9章--元组文件及其他
- Python3.3 学习笔记6 - 文件
- python学习笔记十 类文件对象
- python 学习笔记(11)XML文件
- jquery学习笔记(3)-----jquery与其它库冲突解决
- python学习笔记5-核心类型-元组和文件及其他
- python 系统学习笔记(八)---文件操作
- python学习笔记(一)-文件操作
- python学习笔记十 类文件对象 分类: python基础学习 python 2013-06-18 12:03 254人阅读 评论(0) 收藏
- Python学习笔记(三):文件和目录工具
- python学习笔记 目录和文件操作
- Python学习笔记-XML大文件的XSD验证方法
- python学习笔记——文件
- zigbee学习笔记-----zstack中发现PANID冲突的解决办法。
- Python学习笔记(二)--解决中文的问题
- Python 学习笔记——文件对象和操作