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

Python写入文件后如何正确统计文件行数?

文件写入后行数统计未更新的解决方法

问题原因

你代码里的lines变量是在写入新内容之前计算的,而且调用fl.readlines()后,文件指针会移动到文件末尾,后续写入的内容不会被之前的len(fl.readlines())捕获,所以输出的是初始的行数1。

解决方法

方法1:写入后重置文件指针,重新统计

修改代码,在写入后将文件指针移回文件开头,重新读取统计行数:

fl = open('example.txt', 'r+')
# 统计初始行数
lines = len(fl.readlines())
fl.write('string2\n')
# 将文件指针移到文件起始位置
fl.seek(0)
# 重新读取并统计更新后的行数
updated_lines = len(fl.readlines())
print(updated_lines)
fl.close()

方法2:拆分读写操作,用上下文管理器更安全

推荐用with语句(上下文管理器)处理文件,避免忘记关闭文件,同时分开读写操作:

# 读取初始行数
with open('example.txt', 'r') as f:
    initial_lines = len(f.readlines())

# 追加写入新内容
with open('example.txt', 'a') as f:
    f.write('string2\n')

# 重新读取更新后的行数
with open('example.txt', 'r') as f:
    updated_lines = len(f.readlines())

print(updated_lines)

补充说明

  • r+模式是读写模式,文件指针初始在开头,但readlines()会一次性读取所有内容,把指针移到末尾。
  • seek(0)是将文件指针重置到文件开头,这样后续的readlines()才能读取到包括新写入内容在内的所有行。
  • 用with语句会自动关闭文件,比手动调用close()更安全可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 10:15:40