如何遍历文件中的每第 n 行?

bul*_*zer 2 python file

首先,我是 Python 的新手,确实在寻找答案,但没有运气。到目前为止,我发现只返回一行,就像我下面的代码一样。我尝试了其他解决方案,itertools.islice但总是只得到一条线。

我有一个名为data.txt包含数据行的文件:

This is line one
This is line two 
This is line three 
This is line four 
This is line five 
This is line six 
This is line seven 
...
Run Code Online (Sandbox Code Playgroud)

我有以下代码:

with open('data.txt', 'r') as f:
    for x, line in enumerate(f):
        if x == 3:
            print(line)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,它只打印

“这是第四行”。

我确实明白为什么,但我如何从这里获取它并让它打印第 4、7、10、13 行……?

tim*_*geb 6

的返回值open是一个迭代器(因此是可迭代的),因此您可以将其传递给itertools.islice

islice(iterable, start, stop[, step]) --> islice object
返回一个迭代器,其 next() 方法从一个可迭代对象返回选定的值。[...]

演示:

data.txt

line1
line2
line3
line4
line5
line6
line7
line8
line9
line10
line11
line12
line13
Run Code Online (Sandbox Code Playgroud)

代码:

from itertools import islice

with open('data.txt') as f:
    for line in islice(f, 3, None, 3):
        print line,  # Python3: print(line, end='')
Run Code Online (Sandbox Code Playgroud)

产生:

line4
line7
line10
line13
Run Code Online (Sandbox Code Playgroud)