python 替换文件中的某一行(大文本操作)

#本代码功能: 将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写入大量文件问题

https://blog.csdn.net/dpengwang/article/details/81556573

发布了144 篇原创文章 · 获赞 58 · 访问量 22万+

猜你喜欢

转载自blog.csdn.net/qqyuanhao163/article/details/98476306