如何用Python保留文本文件前100行并删除剩余内容
Python 3 实现日志文件保留前100行、删除末尾老旧内容的方案
你要的需求可以通过「读取前100行→覆盖写入原文件」的逻辑实现,因为最新内容都在文件开头,前100行就是需要保留的内容,覆盖写入会自动清除原文件剩余内容。
普通版本(适合小体积日志文件)
逻辑简单直接,适合日常绝大多数场景:
# 自定义保留的行数 KEEP_LINES = 100 LOG_PATH = "myLogFile.txt" # 读取文件取前N行 with open(LOG_PATH, "r", encoding="utf-8") as f: keep_lines = f.readlines()[:KEEP_LINES] # 覆盖写入原文件,自动清除100行之后的所有内容 with open(LOG_PATH, "w", encoding="utf-8") as f: f.writelines(keep_lines)
大文件优化版本
如果日志文件体积特别大,一次性读取全量内容会占用过多内存,可以用逐行读取的方案,读够100行就停止加载,内存占用极低:
KEEP_LINES = 100 LOG_PATH = "myLogFile.txt" keep_content = [] with open(LOG_PATH, "r", encoding="utf-8") as f: for _ in range(KEEP_LINES): current_line = f.readline() # 若文件本身不足100行则直接停止读取 if not current_line: break keep_content.append(current_line) with open(LOG_PATH, "w", encoding="utf-8") as f: f.writelines(keep_content)
注意事项
- 执行清理操作前建议先备份原日志文件,避免误操作丢失数据
- 如果你的日志文件用的不是utf-8编码,修改
open方法里的encoding参数对应到实际编码即可 - 如果需要定期清理,可以把这段逻辑加到原有脚本的日志写入逻辑之后,每次写完日志自动清理,避免文件体积持续膨胀
内容的提问来源于stack exchange,提问作者Ken
相关产品推荐
相关产品推荐

