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

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 Python ,如果想要在文件写入特定的一行,可以使用 Python 的内置函数 `open()` 打开文件,然后使用文件对象的 `write()` 方法来写入文本。 下面是一个简单的示例,展示了如何在文件写入一行文本: ```python # 打开文件 f = open('filename.txt', 'w') # 写入一行文本 f.write('这是要写入的一行文本\n') # 关闭文件 f.close() ``` 在上面的代码,首先使用 `open()` 函数打开文件 `filename.txt`,并使用参数 `'w'` 表示打开文件时以写入模式打开。然后使用文件对象的 `write()` 方法写入一行文本,最后使用 `close()` 方法关闭文件。 注意,如果打开文件时使用的是 `'w'` 模式,那么打开文件时会清空原来文件的所有内容,并将新写入的内容写入到文件的开头。如果想要在文件的末尾追加新的内容,可以使用 `'a'` 模式打开文件。 需要注意的是,在使用 `write()` 方法写入文本时,需要注意换行符的使用。在上面的代码,我们在写入的文本末尾使用了换行符 `\n`,这样写入的文本就会在文件占据一行。如果不使用换行符 ### 回答2: 要想在Python写入特定的某一行,可以使用如下的步骤: 1. 打开文件:使用内置的`open()`函数打开文件,指定文件路径和打开模式。例如,你可以使用`file = open('example.txt', 'r+')`来以读写模式打开名为`example.txt`的文件。 2. 读取文件内容:使用`readlines()`方法读取文件的所有行,并将其储存在一个列表变量。例如,你可以使用`lines = file.readlines()`来将文件的所有行存储在`lines`变量。 3. 修改指定行:找到你想要修改的那一行,并将其替换为新的内容。例如,假设你想要将第3行的内容替换为`"Hello, world!"`,你可以使用`lines[2] = "Hello, world!\n"`来替换第3行的内容。 4. 删除文件内容:使用`truncate()`方法将文件的内容删去。注意,这一步是为了清空原有内容,以便写入新的内容。例如,你可以使用`file.truncate(0)`来清空文件内容。 5. 写入新内容:使用`writelines()`方法将新的内容写入文件。例如,你可以使用`file.writelines(lines)`来将修改后的内容写入文件。 6. 关闭文件:使用`close()`方法关闭文件,以确保文件资源被释放。例如,`file.close()`可以关闭之前打开的文件。 以下是完整的示例代码: ```python file = open('example.txt', 'r+') lines = file.readlines() # 读取文件所有行 # 修改第3行的内容 lines[2] = "Hello, world!\n" file.truncate(0) # 清空文件内容 file.writelines(lines) # 将修改后的内容写入文件 file.close() # 关闭文件 ``` 这样,你就成功地在Python将特定的某一行进行了修改。请注意,第一行对应的索引是0,因此要修改第3行,需要使用索引2。 希望上述解答对你有所帮助!如果你有任何其他问题,请随时提问。 ### 回答3: 在Python,我们可以使用文件读取和写入操作来写入特定的某一行。 首先,我们需要使用文件读取操作将整个文件的内容读取到一个列表。然后,我们可以使用索引来找到并修改特定行的内容。最后,我们使用文件写入操作将修改后的内容写回到文件。 以下是实现这一操作的代码示例: ```python def write_specific_line(filename, line_number, new_content): # 打开文件,使用"r"模式进行读取操作 with open(filename, "r") as file: lines = file.readlines() # 将文件内容读取到列表 # 确保行号在有效范围内 if line_number < 1 or line_number > len(lines): print("行号超出有效范围") return # 修改指定行的内容 lines[line_number - 1] = new_content + "\n" # 使用"\n"进行换行 # 使用"w"模式打开文件进行写入操作 with open(filename, "w") as file: file.writelines(lines) # 将修改后的内容写回文件 # 示例使用 filename = "test.txt" line_number = 3 new_content = "这是修改后的第三行" write_specific_line(filename, line_number, new_content) ``` 在上述示例,我们定义了一个`write_specific_line()`函数,该函数接受三个参数:文件名`filename`、要修改的行号`line_number`和新内容`new_content`。我们首先读取文件的内容到列表`lines`,然后将要修改的行的内容更新为新内容。最后,我们使用文件写入操作将修改后的内容写回到文件。 需要注意的是,行号从1开始,所以在代码需要将行号减去1,以和列表的索引匹配。同时,为了确保换行符的一致性,我们在新内容后添加了一个换行符"\n"。 希望这个简单的示例能够帮助你理解如何使用Python写入特定某一行文件内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值