在特定行范围内读取文本文件

8 投票
3 回答
39907 浏览
提问于 2025-04-18 13:04

有没有办法从一个文本文件中读取特定的行,比如从第20行到第52行?

我现在是这样打开文件并读取内容的:

text_file = open(file_to_save, "r")
line = text_file.readline()

但是我只想保存特定范围内的数据,或者说是否可以从包含 --- data --- 的那一行开始读取,到包含 -- end of data -- 的另一行结束。

我查阅了文档和网上的例子,但只找到一些关于换行的例子,没找到符合我需求的。

3 个回答

-1

嗯,你可以试试用while循环来做这个。不过你得知道你想加载到哪个字符串,这样做其实不是最好的方法:

text_file=open(name,'r')
line=text.readline()
while line!=(" ") #type the line where you want it to stop
print (line
8

你可以做两件事。第一种是使用 enumerate() 函数,然后加一个 if 条件判断:

text_file = open(file_to_save, "r")
lines = []
for index, text in enumerate(text_file):
    if 19 <= index <= 51:
        lines.append(text)

或者,你也可以使用 readlines() 函数,然后进行切片操作:

text_file = open(file_to_save, "r")
lines = text_file.readlines()
lines = lines[19:52]
28

你可以使用 itertools.islice() 这个工具来处理文件对象,这样你就可以选择性地读取特定的行:

import itertools

with open(file_to_save, "r") as text_file:
    for line in itertools.islice(text_file, 19, 52):
         # do something with line

这段代码会读取第20行到第52行;在Python中,行数是从0开始计算的,所以第一行的编号是0。

把文件对象当作一个迭代器使用,可以让你有很多灵活的操作;比如你可以通过 调用 next() 来读取下一行,这样就能逐行向下移动。

当你把文件当作一个可迭代对象时,不要 使用 readline();这两种方法不太容易混合使用。

撰写回答