我有一个文件,我试图每隔四行读取(并写入另一个文件)。我使用的解决方案并没有给出预期的结果。
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))
现在输出文件给出了line1,line5,line9而不是line4,line8。
我将如何改变这一点以获得理想的结果?
答案 0 :(得分:7)
你快到了。 islice
附带start
参数。在您的情况下,它是第二个,您已设置为None
。试试这个:
fout.writelines(islice(fin,3,None,4)) # line with index 3 is the fourth line
答案 1 :(得分:0)
试试这个
islice(fin,3,None,4) # start from 4
答案 2 :(得分: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]))