上一篇博文(也就是我的第一篇博文)讲了Python文件迭代器的属性。
那篇博文讲到,在Python中,迭代器是文件对象的内秉属性,而迭代器用法 for line in File 会改变File对象的迭代器属性,这个属性不因退出循环而被还原。
今天在使用Python处理一个小文件的过程中发现,file.read()和file.readlines()这两个命令同样会对file对象的迭代器属性产生影响,从而给迭代器用法带来不利的影响。
同样用foo.txt文件为例,它的文件内容是:
line1
line2
line3
line4
line5
line6
line7
line8
line9
执行以下代码:
# coding = gbk
# program name: FileIterator2
import sys
import os
os.chdir(sys.path[0])
with open('foo.txt','r') as file:
for line in file:
print line
其输出为:
line1
line2
line3
line4
line5
line6
line7
line8
line9
请按任意键继续. . .
这里,文件迭代器能够正常工作。
当在文件迭代器前增加file.read()语句后,即执行以下代码:
# coding = gbk
# program name: FileIterator2
import sys
import os
os.chdir(sys.path[0])
with open('foo.txt','r') as file:
file.readlines()
for line in file: