You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python操作文件插入行间隔星号时内容被写入末尾的问题咨询

问题根因

你遇到的现象是Python文本模式的I/O缓冲机制和读写切换规则导致的:

  • 以r+模式打开文本文件时,读操作和写操作切换前,必须调用seek()、tell()或者flush()刷新缓冲区,否则写入操作的位置会不符合预期。你的代码中读完一行调用tell()拿到oldpos后直接执行写入,此时缓冲区没有正确同步,所有写入的内容最终都被追加到了文件末尾。
  • 另外你的实现逻辑本身就存在缺陷:文本文件是顺序存储结构,不存在“中间插入”的操作,你就算修复了指针问题,在当前位置写入内容也会直接覆盖后面的原有文本,根本达不到插入分隔符的效果。

正确实现方案

不要尝试在原文件中直接插入内容,先读全所有行,再覆盖写入整个文件即可,实现代码如下:

with open('exercise3.txt','r+') as file:
    # 先读取所有行到内存
    lines = file.readlines()
    # 指针回到文件开头
    file.seek(0)
    # 清空原有内容,避免新内容长度比旧内容短时残留旧数据
    file.truncate()
    for idx, line in enumerate(lines):
        file.write(line)
        # 除了最后一行,每写完一行就插入20个星号的分隔符
        if idx != len(lines) - 1:
            file.write('*' * 20 + '\n')

内容的提问来源于stack exchange,提问作者ShirinJZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 13:36:03