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

use*_*913 6 python file

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

我打开文件并读取这样的文件:

text_file = open(file_to_save, "r")
line = text_file.readline()
Run Code Online (Sandbox Code Playgroud)

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

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

Mar*_*ers 25

您可以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
Run Code Online (Sandbox Code Playgroud)

将读取第20行到第52行; Python使用基于0的索引,因此第1行编号为0.

使用文件对象作为迭代器可以提供很大的灵活性; 您可以通过调用next()文件对象来读取额外的行,例如,在您执行此操作时前进行"指针".

将文件用作可迭代文件时,请勿使用readline() ; 这两种技术不易混合.

  • 如果您想从文件中读取行样本,是否需要顺序读取?或者-如果您想阅读第25行和第12行,是否应该先阅读第12行? (2认同)

小智 5

您可以做两件事。您可以使用enumerate(),并使用以下if语句:

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

或者,您可以使用readlines()然后切片:

text_file = open(file_to_save, "r")
lines = text_file.readlines()
lines = lines[19:52]
Run Code Online (Sandbox Code Playgroud)

  • 在倒数第二行中,“ readline()”应为“ readlines()” (2认同)