2017-07-17 49 views
-2

我想問,是否有任何方法可以替代使用Python的文本文件或源代碼中的某些註釋?我在評論之間創建了一個標記,我需要將所有舊評論替換爲新評論(標記爲/*<NeedtoReplace>*//*<\NeedtoReplace>*/)。我已經將新保存爲newComment.txt,並且希望生成一個腳本,可以讀取新評論並將其替換爲舊的內部源代碼。在不同的文件夾內有大約超過4+的源代碼,我需要更改註釋或標題註釋。使用Python 2.6.6使用python將文本文件替換爲代碼

/NeedtoReplace/ 
Copyright bla bla bla 
Few lines of comment. 
Other comment. 
bla.... 
/\NeedtoReplace/ 

code 
+0

請確認您使用的標記,例如'/ NeedtoReplace'直到'/ \ NeedtoReplace'?你的文字意味着還有'/ *'和'* /'? –

+0

對不起,措辭和格式。第一次使用這個,只是探討措辭。所以我設置的標記是/ *

* /開頭和結尾是/ * <\HEADER> */ – Ikhwan

回答

0

我希望這可以幫助你:

與string.replace(S,舊,新[,maxreplace])

返回字符串s的一份副本所有出現的舊字符串被新字符替換。如果給出可選參數maxreplace,則會替換第一個maxreplace事件。

7.1. string — Common string operations

+0

謝謝。讓我先試試。 – Ikhwan

1

你需要幾個步驟,首先打開新的註釋文件和存儲文本。接下來掃描您的文件夾以查找合適的源文件,例如*.cpp。對於每個文件,打開它並讀入整個文件。接下來使用正則表達式替換來替換文本。接下來關閉源文件並重新打開它進行寫入。然後寫更新文本回文件:

import glob 
import re 

with open('newComment.txt') as f_comment: 
    comment = f_comment.read() 

for filename in glob.glob('*.cpp'): 
    with open(filename) as f_source: 
     source = f_source.read() 
     source = re.sub(re.escape(r'/*<HEADER>*/') + '.*?' + re.escape(r'/*<\HEADER>*/'), comment, source, flags=re.S) 

    with open(filename, 'w') as f_source: 
     f_source.write(source) 

注意,這將爲所有.cpp文件的工作在一個單一的文件夾中。如果您需要遍歷整個目錄樹,則可以更改爲使用os.walk()

+0

感謝您的解決方案。我會嘗試先應用它。 – Ikhwan