#本代码功能: 将fileB文件中的“CheckScriptResult”行替换成 fileA 中的全部内容,并将新生成的内容写入到 fileC 新的文件里面
#先前写的几版都不行,要么是遍历行频繁使用io读取造成阻塞,要么是文件太大迭代器堆满了造成溢出,一个大文件的全部内容替换到另外一个文件的某一行,如下代码效果非常的好。
#本代码功能: 将fileB文件中的“CheckScriptResult”行替换成 fileA 中的全部内容,并将新生成的内容写入到 fileC 新的文件里面
#先前写的几版都不行,要么是频繁使用io读取造成阻塞,要么是文件太大迭代器堆满了造成溢出,一个大文件的全部内容替换到另外一个文件的某一行,如下代码效果非常的好。
# using python3
import os
import re
fileA = r'uMacCheckScriptResult.txt' #大文件,有1000多行
fileB = r'report_for_Jenkins.html' #模板文件,包含“CheckScriptResult”行
fileC = r'test.html' #新生成的,想要的文件
try:
mmlfile = open(fileA, 'r',encoding="gbk")
except IOError as e:
print( "Can't Open File:" + fileA, e)
allLine = []
str = '\n'
for line in mmlfile:
if 0 != len(line.strip()):
str += '<p>' + line.strip() + '</p>\n'
allLine.append(line.strip() + '\n')
else:
allLine.append('')
mmlfile.close()
# for eachLine in allLine:
# open(fileB, 'w').write(re.sub(r'CheckScriptResult', eachLine + '\nCheckScriptResult\n', f.read()))
f_path = fileB
f = open (f_path, "r+")
# open(fileC, 'w').write(re.sub(r'CheckScriptResult', str(allLine), f.read()))
open(fileC, 'w').write(re.sub(r'CheckScriptResult', str, f.read()))
其中文本多的时候,最好不要用正则表达式,直接用如下代码(replace)即可。
for line in lines:
Modifyhtml = open(TempletHtmlFile, 'a',encoding="utf_8_sig")
if ReStr in line:
Modifyhtml.write(line.replace(ReStr, TableStr))
else:
Modifyhtml.write(line)
Modifyhtml.close()
python写入大量文件问题