2017-07-17 117 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