如何读取文件的前N行?

216 投票
20 回答
426432 浏览
提问于 2025-04-15 16:11

我们有一个很大的原始数据文件,想把它缩减到指定的大小。

我该怎么用Python获取一个文本文件的前N行呢?操作系统会对这个实现有影响吗?

20 个回答

28

如果你想快速读取文件的前几行,而且不太在意性能的话,可以使用 .readlines() 这个方法。它会返回一个列表对象,然后你可以从这个列表中切片,拿到你想要的行。

比如说,如果你想要前5行,可以这样做:

with open("pathofmyfileandfileandname") as myfile:
    firstNlines=myfile.readlines()[0:5] #put here the interval you want

注意:这个方法会把整个文件都读进来,所以从性能的角度来看并不是最优的选择。不过它使用起来很简单,写起来也很快,容易记住。如果你只是想做一些一次性的计算,这个方法非常方便。

print firstNlines

跟其他方法相比,这个方法的一个优点是你可以很容易地选择行的范围,比如说跳过前10行 [10:30],或者取最后10行 [:-10],或者只取偶数行 [::2]

31

在编程中,有时候我们需要让程序在特定的条件下执行某些操作。这就像给程序设定了一些规则,只有当这些规则被满足时,程序才会继续运行。

比如说,你可能想要在用户输入一个数字时,程序才进行计算。如果用户输入的不是数字,程序就会提醒他们重新输入。这种情况下,我们就需要用到“条件语句”。

条件语句就像是一个判断的开关,只有当条件成立时,程序才会执行后面的代码。这样可以避免程序因为错误的输入而崩溃。

总之,条件语句帮助我们控制程序的执行流程,让程序更加智能和友好。

N = 10
with open("file.txt", "a") as file:  # the a opens it in append mode
    for i in range(N):
        line = next(file).strip()
        print(line)
336

Python 3:

with open(path_to_file) as input_file:
    head = [next(input_file) for _ in range(lines_number)]
print(head)

Python 2:

with open(path_to_file) as input_file:
    head = [next(input_file) for _ in xrange(lines_number)]
print head

还有另一种方法(适用于Python 2和3):

from itertools import islice

with open(path_to_file) as input_file:
    head = list(islice(input_file, lines_number))
print(head)

撰写回答