在设定的行范围内读取文本文件

时间:2014-07-12 18:24:39

标签: python

是否可以从文本文件中读取设置的行范围,例如从第20行到第52行?

我打开文件并按如下方式读取文件:

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

但只想将数据保存在设定范围内,或者是否可以从包含---数据---的行之后读入包含 - 数据结尾的另一行 -

我查看了文档和在线示例,只能找到指定新行或其他内容的示例

3 个答案:

答案 0 :(得分:22)

您可以在文件对象上使用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的索引,因此第1行编号为0。

使用文件对象作为迭代器可以提供很大的灵活性;您可以通过calling next() on the file object读取额外的行,例如,在您这样做时推进行“指针”。

将文件用作可迭代时,don't use readline();这两种技术不易混合。

答案 1 :(得分:4)

你可以做两件事。您可以使用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]

答案 2 :(得分:-1)

HM,你可以尝试使用while循环....但你应该知道你想要加载文本的字符串,这不是最好的方法:

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