使用islice循环遍历文本文件

时间:2014-02-28 10:14:44

标签: python text

我想使用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)

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)