当文件对象读取文件时,它使用一个指针来跟踪它的位置。如果您阅读了文件的一部分,然后稍后再返回,它将从您离开的地方继续。如果你读取整个文件,然后回到同一个文件对象,这就像读取一个空文件,因为指针在文件的末尾,没有任何东西可以读取。您可以使用file.tell()
查看指针在文件中的位置并file.seek
设置指针。例如:
>>> file = open('myfile.txt')
>>> file.tell()
0
>>> file.readline()
'one\n'
>>> file.tell()
4L
>>> file.readline()
'2\n'
>>> file.tell()
6L
>>> file.seek(4)
>>> file.readline()
'2\n'
此外,您应该知道file.readlines()
读取整个文件并将其存储为列表。这很有用,因为您可以替换:
for line in file.readlines():
#do stuff
file.seek(0)
for line in file.readlines():
#do more stuff
和:
lines = file.readlines()
for each_line in lines:
#do stuff
for each_line in lines:
#do more stuff
您还可以一次一行地遍历一个文件,而无需将整个文件保存在内存中(这对于非常大的文件非常有用),方法是:
for line in file:
#do stuff