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

Python实现目录下TXT文件去末尾换行后追加内容问题求助

问题分析与解决方案

你遇到的重复写入问题,核心原因是使用r+模式打开文件时,读完内容后文件指针停在了文件末尾,直接调用writelines()会把处理后的内容追加到原内容后面,而不是覆盖原文件。另外,你当前删除末尾换行的逻辑也可以优化——现在的写法只会删除一次末尾的空行,没法处理连续多个换行的情况。

修正后的代码

import os

print("Copy paste full directory path here:")
directory = input().strip()

for filename in os.listdir(directory):
    if filename.endswith(".txt"):
        file_path = os.path.join(directory, filename)
        with open(file_path, "r+") as f:
            # 读取所有内容
            lines = f.readlines()
            # 循环移除末尾所有的空换行(包括\n和\r)
            while lines and lines[-1].strip() == '':
                lines.pop()
            
            # 关键:将文件指针移到文件开头,然后截断文件(清空原有内容)
            f.seek(0)
            f.truncate()
            # 写入处理后的内容
            f.writelines(lines)
            print(f"处理完成:{filename}")

关键改动说明

  1. 文件指针与截断操作:

    • f.seek(0):把文件指针移回文件开头,这样后续写入会从开头开始覆盖。
    • f.truncate():截断当前位置之后的所有内容,确保原文件中超出新内容长度的部分被清空(避免原文件比新内容长时残留旧内容)。
  2. 优化末尾换行删除逻辑:

    • 用while循环替代原来的for循环,持续检查并移除最后一行的空换行,直到最后一行是有效内容为止,这样能处理连续多个末尾换行的情况。
  3. 小细节优化:

    • 给input()加了.strip(),避免用户输入路径时不小心带了首尾空格导致路径错误。
    • 增加了处理完成的提示,方便确认每个文件的处理状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:21:52