本人用於解決動態庫第三方衝突,新增字首,防止類名重複
#!/user/bin/python
# -*- coding:utf-8 -*-
import os
import fileinput
defprefixfiles
(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('.')])
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('.')])
os.rename(name, newname)
return list
defprefixallfiles
(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
defreplacesingledirectory
(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])
defreplacemutabledirectory
(path,tuple):
replacesingledirectory(path,tuple)
for root, dirs, files in os.walk(path):
replacesingledirectory(root,tuple)
defreplacetext
(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")
defjudgeisocdefine
(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("@inte***ce") != -1:
return
true
else:
return
false
defreplacetext2
(name,oldtext,newtext):
with open(name, "r+") as f:
d = f.read()
d.replace(oldtext, newtext)
f.write(d)
defrenameoc
(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_")
OC學習筆記
1 什麼時候用類方法?什麼時候用例項方法?類方法 應該是對整個模型層面的操作,例項方法 是對某單個模型的操作。又如有乙個使用者類,請求附近的使用者,應該寫成類方法,更新當前使用者的資料,應該寫成例項方法。工具類,基本不需要訪問任何成員變數的時候用類方法。主要全域性層面使用,很方便。需要單獨建立某個物...
OC學習筆記5
oc學習筆記 5a.變數的可見性 型別 private 只能在當前類的物件方法中直接訪問 protected 可以在當前類以及子類的物件方法中直接訪問 public 任何乙個地方都可以訪問 package 同乙個 體系內 框架 可以訪問,介於 private 和 public之間 b.propert...
OC學習筆記之OC類你好
之前,小橋的mac系統是裝在虛擬機器中的,虛擬機器占用資源太大,想裝在實機上,所以這個星期都在搗鼓,終於完工!一 關於類 高階語言中似乎都有類的概念,c 中是從c的結構體而來。類是物件導向語言中的核心部分,物件導向的三大特性在類中都有具體表現!比如在c 類中,有封裝,有繼承,多型性有過載!相信oc中...