python學習筆記 解決OC檔案重名衝突

2021-07-24 06:27:52 字數 3577 閱讀 9392

本人用於解決動態庫第三方衝突,新增字首,防止類名重複

#!/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中...