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

Python读取文件每行长度生成列表结果为空的问题排查

错误原因

文件对象自带读取位置指针,第一次执行t = f.readlines()时,指针已经从文件起始位置移动到了文件末尾。你后续循环里第二次调用f.readlines()时,读取起点已经是文件末尾,读不到任何内容,循环完全不会执行,最终lst就是空列表。

修正方法

选任意一种即可:

  • 直接复用第一次读取得到的t列表做遍历,无需二次调用读取方法
    f = open("abcd.txt", 'r')
    t = f.readlines()
    print(t)
    lst = []
    for line in t:
        # 如果不想把行尾的换行符计入长度,就改成 len(line.rstrip('\n'))
        lst.append(len(line))
    f.close() # 读取完成后记得关闭文件
    print(lst)
    
  • 如果确实需要二次读取文件,在第二次调用readlines()前用f.seek(0)把读取指针重置回文件开头即可
    f = open("abcd.txt", 'r')
    t = f.readlines()
    print(t)
    f.seek(0) # 将读取位置重置到文件起始处
    lst = []
    for line in f.readlines():
        lst.append(len(line))
    f.close()
    print(lst)
    

日常写代码更推荐用with上下文管理器,会自动帮你处理文件关闭逻辑,避免资源泄漏,简化写法示例:

with open("abcd.txt", 'r', encoding='utf-8') as f:
    lines = f.readlines()
    lst = [len(line) for line in lines]
print(lst)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 02:57:14