如何让python读取.txt文件的每N行?

2024-03-29 09:27:09 发布

您现在位置:Python中文网/ 问答频道 /正文


Tags: python
3条回答

有点晚了,但这里有一个解决方案,不需要一次将整个文件内容读入RAM,这可能会在处理足够大的文件时造成麻烦:

# Print every second line.
step = 2
with open("file.txt") as handle:
    for lineno, line in enumerate(handle):
        if lineno % step == 0:
            print(line)

文件对象(handle)允许在行上迭代。这意味着如果不需要,我们可以逐行读取文件,而不必累加所有行。为了选择每一行,我们使用带当前行号和所需步长的模运算符。

你不能。。。[使用纯I/O函数]您必须阅读所有行,并使代码忽略不需要的行。

例如:

with open(filename) as f:
    lines = f.readlines()
desired_lines = lines[start:end:step]

在上面的代码中,将start、end和step替换为所需的值,例如,“…如果我想读取.txt文件的第2行,但之后每4行…您应该这样做:

desired_lines = lines[1::4]

您可以首先使用with语句openfile作为f。然后,您可以使用Python的slicing符号iterate通过line中的每个file

如果取f.read(),则在每个line结尾处都有一个new-line\n)字符:

"line1\nline2\nline3\n"

因此,要将其转换为listlines以便我们可以slice它得到彼此的line,我们需要split它在每次出现\n时:

f.read().split()

对于上述示例,将给出:

["line1", "line2", "line3"]

最后,我们需要每隔一个line,这是用slice[::2]完成的。我们从slicing的工作方式知道这一点:

list[start : stop : step]

使用所有这些,我们可以编写一个for-loop,它将iterate通过其他line

with open("file.txt", "r") as f:
    for line in f.read().split("\n")[::2]:
        print(line)

相关问题 更多 >