for index, line in enumerate(f.readlines()) 之后, f.readlines() 为什么会被清空了?

2020 年 4 月 6 日
 miniyao

文档打开之后,f = open('doc.txt', 'r') 通过 enumerate() 枚举,发现 f.readlines() 变成空列表 [] 啦?这是什么原因?

f = open('doc.txt', 'r')
for index, line in enumerate(f.readlines()):
    print(index, line)
    print(f.readlines())
f.close()

print(f.readlines()) 打印出来是空列表 []

2566 次点击
所在节点    Python
4 条回复
felix021
2020 年 4 月 6 日
f.readlines() 读取了文件的所有内容,这时候文件的读指针已经在末尾了。
jmc891205
2020 年 4 月 6 日
因为你调用过 readlines 之后 the stream position 已经在文件末尾了
所以你再调用 readlines 就读不到任何东西了


要么你先用一个变量把 readlines 的返回值存一下
要么你在第二次调用 readlines 之前调用一下 seek
aloxaf
2020 年 4 月 6 日
题外话:这里直接 enumerate(f) 即可,.readlines() 多此一举(
Kobayashi
2020 年 4 月 7 日
f.seek(0)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://study.congcong.us/t/659800

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX