ファイルのリストで次のヘッダーを見つけて、自分のものに置き換えようとしています。
/*************************************************************************************
* Company: XXX
* File Name: myfile1.c
* Author: MyName
* Date: 30/12/2011
* Operating Environment: XXX
* Compiler with Version Number:
* Description: This file contains an array which returns a structure having API characteristics.
* Version:
***********************************************************************************/
基本的に、ディレクトリのリストを走査し、すべてのファイルで文字列置換を行う python プログラムを作成しようとしています。以下は私のプログラムのコードです:
import sys
import os
import re
correctlicheader = r'''
/* <MY-HEADER>
*
*/
'''
def changelic():
startdir = sys.argv[1]
for root, dirs, files in os.walk(startdir):
for file in files:
actualfilename = os.path.join(root, file)
print("Reading file: %s" %(actualfilename))
f = open(actualfilename, 'r')
read_data = f.read()
#try replacing the incorrect header
p = re.compile("<MY-REGULAREXPRESSION-HERE>")
changed_data = p.sub(correctlicheader, read_data, 1)
f.close()
f= open(actualfilename, 'w')
f.write(changed_data)
f.close()
print("End")
if __name__ == '__main__':
changelic()
問題は、「MY-REGULAREXPRESSION-HERE」が正しくないことです。私は試した
p = re.compile("/\*[\*]*\r\n[ *[a-zA-Z0-9:/\.]+\r\n]*\*/")
および上記のさまざまな順列。しかし、私は得続けます
matched = p.match(read_data)
None
「MY-REGULAREXPRESSION-HERE」を置き換える提案はありますか? また、 open(read-mode)-close-open(write-mode)-write なしで同じことを行うより良い方法はありますか?