问题
有某个人文本文件,我们想读取某范围的内容:如100-300行之间的内容
,python中文本文件是一个可迭代对象,我们是否可以使用类似于列表切片
的方式得到一个100 - 300 行文件内容的生成器?
f = open('/var/mtianyan.txt')
f[100:300] #可以吗?
普通做法:
f = open('guess.py')
# 'file' object has no attribute '__getitem__'
f[1:8]
print dir(f)
lines = f.readlines()
print lines[1:3]
# 使用seek操作使读取文件的游标返回到头部
f.seek(0)
for line in f:
print line
高级做法:
from itertools import islice
# print help(islice)
# islice(iterable, [start,] stop [, step])
#
f = open('guess.py')
print islice(f, 1, 3)
# 打印一行到三百行
for line in islice(f, 1, 300):
print line
# 打印前三百行
for line in islice(f, 300):
print line
# 打印100到结尾
for line in islice(f, 100, None):
print line
l = range(20)
print l
t = iter(l)
for x in islice(t,5,10):
print x
print '*'*20
# 它会消耗迭代器对象,因此下面的for循环会从10开始
for x in t:
print x