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}")
关键改动说明
文件指针与截断操作:
f.seek(0):把文件指针移回文件开头,这样后续写入会从开头开始覆盖。f.truncate():截断当前位置之后的所有内容,确保原文件中超出新内容长度的部分被清空(避免原文件比新内容长时残留旧内容)。
优化末尾换行删除逻辑:
- 用
while循环替代原来的for循环,持续检查并移除最后一行的空换行,直到最后一行是有效内容为止,这样能处理连续多个末尾换行的情况。
- 用
小细节优化:
- 给
input()加了.strip(),避免用户输入路径时不小心带了首尾空格导致路径错误。 - 增加了处理完成的提示,方便确认每个文件的处理状态。
- 给
内容的提问来源于stack exchange,提问作者Simplymcbook
相关产品推荐
相关产品推荐

