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
相关产品推荐
相关产品推荐

