2015-02-23 84 views
3

我有一個文件,我試圖讀取(並寫入另一個文件)每四行。我正在使用的解決方案沒有給出預期的結果。在Python中讀取每第四行

sample.txt的 line1 line2 line3 line4 line5 line6 line7 line8 line9 line10

script.py

from itertools import islice 
with open('sample.txt') as fin, open('output.txt','w') as fout: 
     fout.writelines(islice(fin,None,None,4)) 

現在輸出文件給我行1,LINE5,line9而不是4號線,line8。

我會如何改變這種情況以獲得理想的結果?

+1

出色的使用'islice' – 2015-02-23 15:49:21

+0

你最終會將空白行添加到文件中,以便稍後您可能想要了解哪些情況會成爲問題。 – 2015-02-23 15:50:10

回答

7

你快到了。 islice附帶start參數。就你而言,這是第二個,你已經設置爲None。試試這個:

fout.writelines(islice(fin,3,None,4)) # line with index 3 is the fourth line 
+1

啊完美。就是這樣。看起來我很接近。非常感謝你! – lenhun 2015-02-23 15:50:11

0

試試這個

islice(fin,3,None,4) # start from 4 
0

這也可以通過默認列表切片做(不itertools):

#!/usr/bin/env python2 
with open('sample.txt') as fin, open('output.txt', 'w') as fout: 
fout.write(''.join(fin.readlines()[3::4]))