Python中readlines()能获取行数却无法打印内容的原因及解决方法
问题分析与解决
问题背景
userdb 文件内容
line1 line2 line3
测试代码
with open("userdb","r",encoding='utf-8') as fl: user_count = len(fl.readlines()) print(fl.readlines()) print(user_count)
运行输出
[] 3
行数统计结果正常,但第二次调用readlines()无法打印文件内容,原因及解决方法如下:
原因
readlines()方法会一次性读取文件所有行,同时将文件指针移动到文件末尾。第一次调用fl.readlines()时已经读完了所有内容,此时指针停在文件最后位置;第二次再调用时,从当前指针位置往后没有任何内容,所以返回空列表[]。而第一次读取的行数已经被存入user_count变量,因此能正常输出3。
解决方法
有两种实用的解决方式:
- 先把读取的内容存入变量,后续直接复用这个变量
with open("userdb","r",encoding='utf-8') as fl: lines = fl.readlines() # 一次性读取所有行并保存 user_count = len(lines) print(lines) print(user_count)
- 调用
seek(0)重置文件指针到开头
with open("userdb","r",encoding='utf-8') as fl: user_count = len(fl.readlines()) fl.seek(0) # 将文件指针移回文件起始位置 print(fl.readlines()) print(user_count)
内容的提问来源于stack exchange,提问作者user18292031
相关产品推荐
相关产品推荐

