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

为什么调用readlines方法后,for line in f遍历文件没有任何输出?

根因分析
  • 调用f.readlines()读取文件内容后,文件指针会移动到文件末尾位置,后续所有读操作都会从这个位置开始往后执行。
  • 无论你是否在判断为空后写入了新内容,写入操作完成后指针依然会停留在文件末尾,此时遍历文件对象相当于从末尾读数据,自然没有任何内容可以输出。
修复方法

你只需要在遍历文件前,调用f.seek(0)将文件指针重置到文件开头即可,修复后的代码如下:

with open("data.txt", "r+") as f:
    if f.readlines() == []:
        f.write(input("Enter your name : "))
        f.write("\n" + input("Enter your name_roll no (javets_6890) : "))
        f.write("\n" + input("Enter the password for your mail id : "))
        f.write("\n" + input("Enter your roll number : "))
        f.write("\n" + input("Enter your admission number : "))
    # 重置文件指针到开头
    f.seek(0)
    for line in f:
        print(line)

如果想要更高的判断效率,也可以直接判断文件大小来确认是否为空,避免提前读取整个文件:

import os
with open("data.txt", "r+") as f:
    # 判断文件大小是否为0
    if os.fstat(f.fileno()).st_size == 0:
        f.write(input("Enter your name : "))
        f.write("\n" + input("Enter your name_roll no (javets_6890) : "))
        f.write("\n" + input("Enter the password for your mail id : "))
        f.write("\n" + input("Enter your roll number : "))
        f.write("\n" + input("Enter your admission number : "))
    f.seek(0)
    for line in f:
        print(line)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 05:24:03