2014-02-28 62 views
1

我想使用islice多次讀取文本文件的行。其目的是每次嘗試獲取包含列表中索引的行,並稍後寫入僅包含這些行的文件。我嘗試了下面的腳本,但是我意識到(通過打印行號)程序只是在我的for循環中讀取一次文件。爲什麼?使用islice通過文本文件循環

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

第一次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)