使用python将文本文件替换为代码

时间:2017-07-17 06:23:41

标签: python regex

我想问一下,有没有办法让我用Python替换文本文件或源代码中的一些注释?我在评论之间创建了一个标记,我需要将所有旧评论替换为新评论(标记为/*<NeedtoReplace>*//*<\NeedtoReplace>*/)。我已经将新保存为newComment.txt,并希望生成一个脚本,该脚本可以读取新注释并将其替换为旧的内部源代码。在我需要更改注释或标题注释的不同文件夹中有大约4个以上的源代码。使用python 2.6.6

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

code

2 个答案:

答案 0 :(得分: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()

答案 1 :(得分:0)

我希望这可以帮到你:

  

string.replace(s,old,new [,maxreplace])

     

返回字符串s的副本,其中所有出现的substring old都替换为new。如果给出了可选参数maxreplace,则替换第一个maxreplace事件。

7.1. string — Common string operations