为什么调用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
相关产品推荐
相关产品推荐

