我想使用islice多次读取文本文件的行。目的是每次尝试获取包含列表中包含索引的行,然后再写入包含这些行的文件。我尝试了以下脚本,但我意识到(通过打印行号)程序只读取文件一次,尽管我的for循环。为什么呢?
with open(input,'r') as inp,:
sliced_file = islice(inp,None)
for ind in listOfInd:
print('ind ' + ind)
for line_number, line in enumerate(sliced_file,start=1):
print(line_number)
number, rest = line.split('\t',1)
答案 0 :(得分:1)
第一次在enumerate
迭代器对象上调用sliced_file
函数时,将到达文件末尾。因此,下次再次遍历文件时,必须将文件指针重置为文件的开头。
同样在你的代码片段中,流量控制移出with块,文件将被关闭,无法读取。
这是一个固定的代码。
inp = open(input,'r')
sliced_file = islice(inp,None)
for ind in listOfInd:
print('ind ' + ind)
for line_number, line in enumerate(sliced_file,start=1):
print(line_number)
number, rest = line.split('\t',1)
inp.seek(0)